如何在c ++的基本成员初始化部分初始化std :: map?

时间:2013-03-17 04:34:19

标签: c++ initialization-list

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

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

}

我不太清楚这样做的语法是什么。我想的是:

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

}

但那不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您缺少初始化列表:

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

}

这也应该有效:

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

}

演示here

编辑:这是一个应该在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()) {}
};