Ich möchte eine Map implementieren, die einen String einem generischen Vektor zuordnet.STL-Map zu generischem Vektor C++
Ich möchte, dies zu tun:
std::map<std::string, std::vector<class T> > myMap;
die vorgeschlagene myMap Unter der Annahme, hatte die in sie eingefügt folgenden, könnte es als solches verwendet werden:
vector<int> intVec = myMap["ListOfInts"]; // Works because "ListOfInts" maps to a vector<int>
vector<string> stringVec = myMap["ListOfStrings"]; // Works because "ListOfInts" maps to a vector<string>
Wenn ich erklären die Karte mit dem oben Syntax der Compiler hat einen Herzinfarkt.
Kann jemand irgendwelche Vorschläge machen? Oder eine bessere assoziieren Array-Option in C++ (vorschlagen, Nicht-Boost vor Boost).
Sie Ihre Karte Wert benötigen würde ein Variant-Typ zu sein, gibt es keine Standardvariante Typ Sie müssten also entweder Ihre eigenen implementieren oder etwas wie ['boost :: variant'] (http://www.boost.org/doc/libs/1_59_0/doc/html/variant.html) verwenden. – mattnewport
Wie viele verschiedene 'T' brauchen Sie für Ihren std :: vector? Sie könnten mit einem polymorphen Container davonkommen, wenn Sie herausfinden können, worüber Sie über RTTI oder über eine Art von ID, die Sie selbst implementieren, zu sprechen haben. –
VoidStar
C++ ist statisch typisiert und Map-Werttypen müssen in einer Map alle gleich sein. Wenn Sie uns das wirkliche Problem mitteilen, das Sie zu lösen versuchen, können wir in der Lage sein, auf C++ - idiomatisch zu verweisen, oder auf "boost :: variant" zu schauen. –