Chcę zaimplementować mapę, która mapuje ciąg do ogólnego wektora.Mapa STL do generycznego wektora C++
chcę to zrobić:
std::map<std::string, std::vector<class T> > myMap;
Zakładając proponowane MyMap miał następującą włożona do niego, może być stosowany jako taki:
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>
Kiedy Oświadczam mapę z powyższych Składnia kompilator ma atak serca.
Czy ktokolwiek może sugerować? Lub lepszą opcję tablicy asocjacyjnej w C++ (sugeruje brak wzmocnienia przed podbiciem).
Będziesz potrzebować swoją wartość mapa być typu wariant, nie ma standardowy typ wariant więc musisz albo zaimplementować własne, albo użyć czegoś w rodzaju ['boost :: variant'] (http://www.boost.org/doc/libs/1_59_0/doc/html/variant.html). – mattnewport
Ile różnych "T" potrzebujesz do swojego std :: vector? Możesz uciec z polimorficznym pojemnikiem, jeśli możesz dowiedzieć się, co przesłać za pośrednictwem RTTI lub za pośrednictwem jakiegoś identyfikatora, który sam sobie zaimplementowałeś. –
VoidStar
C++ jest statycznie wpisane, a typy wartości map muszą być takie same na mapie. Jeśli powiesz nam o prawdziwym problemie, który próbujesz rozwiązać, możemy być w stanie wskazać C++ - idiomatyczny sposób lub spojrzeć na 'boost :: variant'. –