在C++11中,我可以使用initializer_list来初始化一个map,如下所示:
map<string, int> mymap = {{"first", 1}, {"second", 2}};
但不是这样:
initializer_list<pair<string,int>> il = {{"first", 1}, {"second", 2}};
map<string, int> mymap2{il};
你知道这是为什么吗?是因为有不同的语法还是根本不可能实现?
谢谢。
const
,它也应该能正常工作。 - kvivekconst
是正确的做法,但这不应该是强制性的。即使没有使用const
,我的代码也可以编译。 - kvivekmap<string, int> mymap2{il};
赋值操作,则必须使用const
,否则使用initializer_list<pair<string,int>> il = {{"first", 1}, {"second", 2}};
创建映射本身不会引发任何错误。 - kvivek