Чи я можу зробити функцію, яка приймає контейнер із певним типом (скажімо std::string
) як параметр
void foo(const std::container<std::string> &cont)
{
for(std::string val: cont) {
std::cout << val << std::endl;
}
}
і називати його для кожного типу контейнера stl як вхідного? як вище?
std::set<std::string> strset;
std::vector<std::string> strvec;
std::list<std::string> strlist;
foo(strset);
foo(strvec);
foo(strlist);
2
Так, це називається функцією шаблону. ;)
—
Ульріх Екхардт
Часто вважається кращим пропустити пару ітераторів (що представляють початок і кінець контейнера відповідно). Поки ітератори відповідають вимогам функції, це (часто є деякі винятки) не має значення, з якого типу контейнерів вони були отримані.
—
Петро