c ++ 11:使用显式的initializer_list对象初始化map

Gan*_*nil 5 initializer-list c++11

在C++ 11中,我可以使用如下所示的initializer_list初始化地图:

map<string, int> mymap = {{"first", 1}, {"second", 2}};
Run Code Online (Sandbox Code Playgroud)

但不是这样的:

initializer_list<pair<string,int>> il = {{"first", 1}, {"second", 2}};

map<string, int> mymap2{il};
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?是否有不同的语法或根本不可能?

谢谢.

eca*_*mur 5

获取列表的initializer_list构造函数,它是第一个元素.mapvalue_typepairconst

这将有效:

initializer_list<pair<string const,int>> il = {{"first", 1}, {"second", 2}};
                            ^^^^^^
Run Code Online (Sandbox Code Playgroud)