c++11:使用显式 initializer_list 对象初始化映射

c++11: initialize map with explicit initializer_list object

在 C++11 中,我可以像这样使用 initializer_list 初始化地图:

map<string, int> mymap = {{"first", 1}, {"second", 2}};

但不是这样的:

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

map<string, int> mymap2{il};

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

谢谢。

mapinitializer_list 构造函数采用 value_type 的列表,它是第一个元素 const.

pair

这会起作用:

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