Voglio implementare una mappa, che mappa una stringa in un vettore generico.STL map to generic vector C++
Voglio fare questo:
std::map<std::string, std::vector<class T> > myMap;
Supponendo che il myMap proposto aveva le seguenti inserito in esso, potrebbe essere usato come tale:
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>
Quando dichiaro la mappa con quanto sopra sintassi il compilatore ha un attacco di cuore.
Qualcuno può dare qualche suggerimento? O una migliore opzione di array associato in C++ (suggerire non-boost prima di aumentare).
si avrebbe bisogno il vostro valore di carta per essere un tipo di variante, non c'è alcun tipo di versione standard quindi dovresti implementare il tuo o usare qualcosa come ['boost :: variant'] (http://www.boost.org/doc/libs/1_59_0/doc/html/variant.html). – mattnewport
Quanti '' T' necessari per il tuo std :: vector? Potresti farla franca con un contenitore polimorfico se riesci a capire che cosa trasmettere a RTTI o tramite qualche tipo di ID da te implementato. –
VoidStar
Il C++ è tipizzato in modo statico e i tipi di valori della mappa devono essere tutti uguali in una mappa. Se ci dici il vero problema che stai cercando di risolvere, potremmo essere in grado di indicare un C++ - modo idiomatico, o guardare 'boost :: variant'. –