How do I write a map literal in C++11?
c++, c++11, dictionary, literals
Solution
You can actually do this:
std::map<std::string, int> mymap = {{"one", 1}, {"two", 2}, {"three", 3}};
What is actually happening here is that `std::map` stores an `std::pair` of the key value types, in this case `std::pair<const std::string,int>`. This is only possible because of c++11's new uniform initialization syntax which in this case calls a constructor overload of `std::pair<const std::string,int>`. In this case `std::map` has a constructor with an `std::intializer_list` which is responsible for the outside braces.
So unlike python's any class you create can use this syntax to initialize itself as long as you create a constructor that takes an initializer list (or uniform initialization syntax is applicable)
Problem
In Python, I can write a map literal like this: ``` mymap = {"one" : 1, "two" : 2, "three" : 3} ``` How can I do the equivalent in C++11?