map of vectors in STL?

c++, stl

Solution

The first data structure will work. You might want to `typedef` some of the code to make future work easier:

typedef std::vector<MyClass>      MyClassSet;
typedef std::map<int, MyClassSet> MyClassSetMap;

MyClassSetMap map;
map.insert(MyClassSetMap::value_type(10, MyClassSet()));

or (thanks quamrana):

map[10] = MyClassSet();

Problem

I want to have a map of vectors, (but I don't want to use pointer for the internal vector), is it possible? ``` // define my map of vector map<int, vector<MyClass> > map; // insert an empty vector for key 10. # Compile Error map.insert(pair<int, vector<MyClass> >(10, vector<MyClass>)); ``` I know that if I have used pointer for vector, as follows, it would be fine, but I wonder if I can avoid using pointer and use the above data structure (I don't want to manually delete) ``` // define my map of vector map<int, vector<MyClass>* > map; // insert an empty vector for key 10. map.insert(pair<int, vector<MyClass>* >(10, new vector<MyClass>)); ```

Original source