มีวิธีที่ฉันสามารถสร้างฟังก์ชั่นที่ใช้ภาชนะที่มีประเภทเฉพาะ (ขอพูดstd::string
) เป็นพารามิเตอร์
void foo(const std::container<std::string> &cont)
{
for(std::string val: cont) {
std::cout << val << std::endl;
}
}
และเรียกมันว่า stl container ทุกชนิดเป็น input หรือไม่? ชอบข้างบน?
std::set<std::string> strset;
std::vector<std::string> strvec;
std::list<std::string> strlist;
foo(strset);
foo(strvec);
foo(strlist);
2
ใช่เรียกว่าฟังก์ชันเทมเพลต ;)
—
Ulrich Eckhardt
มันมักจะถือว่าดีกว่าที่จะผ่านคู่ของตัววนซ้ำ (แทนจุดเริ่มต้นและหนึ่งในอดีตที่ผ่านมาของภาชนะตามลำดับ) ตราบใดที่ตัววนซ้ำตอบสนองความต้องการของฟังก์ชั่นมัน (บ่อยครั้งที่มีข้อยกเว้นบางอย่าง) ไม่สำคัญว่าจะได้รับภาชนะประเภทใด
—
ปีเตอร์