Search code examples
c++c++11dictionaryinitializer-list

What would a std::map extended initializer list look like?


If it even exists, what would a std::map extended initializer list look like?

I've tried some combinations of... well, everything I could think of with GCC 4.4, but found nothing that compiled.


Solution

  • It exists and works well:

    std::map <int, std::string>  x
      {
        std::make_pair (42, "foo"),
        std::make_pair (3, "bar")
      };
    

    Remember that value type of a map is pair <const key_type, mapped_type>, so you basically need a list of pairs with of the same or convertible types.

    With unified initialization with std::pair, the code becomes even simpler

    std::map <int, std::string> x { 
      { 42, "foo" }, 
      { 3, "bar" } 
    };