Có cách nào để tôi có thể tạo một hàm lấy một thùng chứa với một loại cụ thể (giả sử std::string
) làm tham số không
void foo(const std::container<std::string> &cont)
{
for(std::string val: cont) {
std::cout << val << std::endl;
}
}
và gọi nó cho mọi loại container stl làm đầu vào? như trên?
std::set<std::string> strset;
std::vector<std::string> strvec;
std::list<std::string> strlist;
foo(strset);
foo(strvec);
foo(strlist);
2
Đúng, nó được gọi là một hàm mẫu. ;)
—
Ulrich Eckhardt
Nó thường được coi là tốt hơn để vượt qua một cặp vòng lặp (tương ứng là bắt đầu và một quá khứ của container). Miễn là các trình vòng lặp đáp ứng các yêu cầu của hàm, nó (thường, có một số ngoại lệ) không quan trọng chúng được lấy từ loại container nào.
—
Peter