如何在c++的基本成员初始化节中初始化std::map

how do I initialize a std::map in the base member initialization section in c++?

本文关键字:初始化 std map 成员 c++      更新时间:2023-10-16

基本上,我有一个map作为类中的成员变量,我想在基本成员初始化部分中使用键值对初始化。

Parser::Parser()
    :operations() //the dictionary
{
}

我不太确定做这个的语法是什么。我在想这样写:

Parser::Parser()
    :operations({"hello","goodbye"},{"foo","bar"}) 
{
}

但这不起作用

任何想法?

您缺少一个初始化器列表:

Parser::Parser()
    :operations({{"hello","goodbye"},{"foo","bar"}}) 
{
}

这个应该也可以:

Parser::Parser()
    :operations{{"hello","goodbye"},{"foo","bar"}}
{
}

演示。

Edit:这是一个应该在VS:

下工作的替代方法。
struct a {
    std::map<int, int> x;
    static std::map<int, int> make_map() {
        std::map<int, int> some_map = {{1,2}, {3,4}};
        return some_map;
    }
    a() : x(make_map()) {}
};