barcaroller writes:
Is there a way in C++ to initialize an STL map in one statement (the
way arrays can be initialized in C)?
For example, instead of using:
map<type1,type2> mymap;
mymap[key1] = value1;
mymap[key2] = value2;
I would like to use something like:
// wrong syntax!
map<type1,type2> mymap = { (key1, value1), (key2, value2) };
You can subclass it, and define an operator function.
template<typename keyType, typename valType> class myMap
: public std::map<keyType, valType> {
public:
myMap<keyType, valType> &operator()(keyType k, valType v)
{
(*this)[k]=v;
return *this;
};
};
You can initialize these objects as follows:
myMap<int, int> z=myMap<int, int>()(3, 4)(5, 6);
.. and so on. You can use these objects anywhere std::map is acceptable.
subclassed. It hasn't got a virtual destructor, for example, so the