abw*_*333 14 c++ map literals c++11
在Python中,我可以像这样写一个地图文字:
mymap = {"one" : 1, "two" : 2, "three" : 3}
Run Code Online (Sandbox Code Playgroud)
如何在C++ 11中完成等效操作?
aar*_*man 30
你实际上可以这样做:
std::map<std::string, int> mymap = {{"one", 1}, {"two", 2}, {"three", 3}};
Run Code Online (Sandbox Code Playgroud)
这里实际发生的是std::map存储std::pair键值类型,在这种情况下std::pair<const std::string,int>.这是唯一可能的,因为c ++ 11的新统一初始化语法在这种情况下调用构造函数重载std::pair<const std::string,int>.在这种情况下std::map有一个构造函数,std::intializer_list其中负责外部括号.
因此,与python不同,您创建的任何类都可以使用此语法初始化自身,只要您创建一个采用初始化列表的构造函数(或统一初始化语法适用)
abw*_*333 15
你可以这样做:
std::map<std::string, int> mymap = {{"one", 1}, {"two", 2}, {"three", 3}};
Run Code Online (Sandbox Code Playgroud)