Я хочу реализовать карту, которая отображает строку в общий вектор.STL map to generic vector C++
Я хочу, чтобы это сделать:
std::map<std::string, std::vector<class T> > myMap;
Предполагая, что предложенный MyMap имел следующий вставленный в него, он может быть использован как таковой:
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>
Когда я объявляю карту с вышеизложенным Синтаксис компилятора имеет сердечный приступ.
Можно ли сделать какие-либо предложения? Или вариант более подходящего массива в C++ (предположим, что он не повышается до повышения).
Вы должны были бы ваши ценности карты быть вариантом типа, нет стандартного типа варианта так что вам придется либо реализовать свои собственные, либо использовать что-то вроде [boost :: variant] (http://www.boost.org/doc/libs/1_59_0/doc/html/variant.html). – mattnewport
Сколько разных 'T' вам нужно для вашего std :: vector? Вы можете уйти с полиморфным контейнером, если сможете выяснить, что делать с помощью RTTI или с помощью какого-либо идентификатора, который вы реализуете самостоятельно. –
VoidStar
C++ статически типизирован, а типы значений карты должны быть одинаковыми на карте. Если вы сообщите нам о реальной проблеме, которую вы пытаетесь решить, мы сможем указать на C++ - идиоматический способ, или посмотрим на 'boost :: variant'. –