Gibt es eine Möglichkeit, eine Funktion zu erstellen, die einen Container mit einem bestimmten Typ (z. B. std::string
) als Parameter verwendet?
void foo(const std::container<std::string> &cont)
{
for(std::string val: cont) {
std::cout << val << std::endl;
}
}
und es für jede Art von stl-Container als Eingabe aufrufen? wie oben?
std::set<std::string> strset;
std::vector<std::string> strvec;
std::list<std::string> strlist;
foo(strset);
foo(strvec);
foo(strlist);
c++
templates
stl
containers
Chatzich
quelle
quelle
Antworten:
Sie können
foo
eine Funktionsvorlage erstellen, die einen Vorlagenvorlagenparameter für den Containertyp verwendet.z.B
LEBEN
quelle
std::string
, also ...Abhängig davon, ob Sie
foo
für andere Fälle überladen möchten oder nichtSie können einen anderen Test verwenden
std::is_same
,std::is_convertible
um dies zuzulassenquelle
Möglicherweise möchten Sie stattdessen Iteratoren verwenden. Ein Zwischenergebnis kann so aussehen
Verwenden Sie jetzt eine aufrufbare Vorlage:
Wir haben gerade gelernt, das zu nutzen, was die STL bereits bietet.
quelle
Ich denke, wir können die Antwort von @ songyuanyao weiter verallgemeinern, um:
quelle