在Python中,我可以像这样写一个地图文字:
mymap = {"one" : 1, "two" : 2, "three" : 3}
如何在C ++ 11中执行等效操作?
答案 0 :(得分:28)
你实际上可以这样做:
std::map<std::string, int> mymap = {{"one", 1}, {"two", 2}, {"three", 3}};
这里实际发生的是std::map
存储std::pair
个键值类型,在本例中为std::pair<const std::string,int>
。这是唯一可能的,因为c ++ 11的新统一初始化语法在这种情况下调用std::pair<const std::string,int>
的构造函数重载。在这种情况下,std::map
有一个构造函数,其std::intializer_list
负责外部括号。
因此,与python不同,只要创建一个采用初始化列表的构造函数(或统一初始化语法适用),您创建的任何类都可以使用此语法进行初始化。
答案 1 :(得分:14)
你可以这样做:
std::map<std::string, int> mymap = {{"one", 1}, {"two", 2}, {"three", 3}};