C++ 字面量

# C++中的字典字面量

You can actually do this:

“`
std::map mymap = {{“one”, 1}, {“two”, 2}, {“three”, 3}};
“`

What is actually happening here is that std::map stores an std::pair of the key value types, in this case std::pair. This is only possible because of c++11’s new uniform initialization syntax which in this case calls a constructor overload of std::pair. In this case std::map has a constructor with an std::intializer_list which is responsible for the outside braces.

So unlike python’s any class you create can use this syntax to initialize itself as long as you create a constructor that takes an initializer list (or uniform initialization syntax is applicable)

https://stackoverflow.com/a/20230177/1061155

About 逸飞

后端工程师

发表评论

电子邮件地址不会被公开。 必填项已用*标注