Existe alguma maneira que eu possa fazer uma função que pega um contêiner com um tipo específico (digamos std::string
) como parâmetro
void foo(const std::container<std::string> &cont)
{
for(std::string val: cont) {
std::cout << val << std::endl;
}
}
e chamá-lo para todos os tipos de contêiner stl como entrada? como acima?
std::set<std::string> strset;
std::vector<std::string> strvec;
std::list<std::string> strlist;
foo(strset);
foo(strvec);
foo(strlist);
2
Sim, isso é chamado de função de modelo. ;)
—
Ulrich Eckhardt
Geralmente, é considerado melhor passar um par de iteradores (representando o início e o fim do contêiner, respectivamente). Desde que os iteradores atendam aos requisitos da função, (muitas vezes, existem algumas exceções), não importa de que tipo de contêineres foram obtidos.
—
Peter