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

标签 c++ initialization-list

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

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"}}
{

}

演示 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()) {}
};

关于c++ - 如何在 C++ 的基本成员初始化部分中初始化 std::map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15457553/

相关文章:

c++ - Windows TCP 套接字超时 C++

c++ - 为什么在基于范围的初始化程序中使用临时对象会导致崩溃?

c++ - 在 C++ 中,使用初始化列表的定义和原始类型的 '=' 字符之间有什么区别吗?

c++ - 在构造函数初始化列表中初始化成员数组(C++11 之前)

c# - 如何在任意网格上找到顶点的邻居?

c++ - 如何检查 ostrstream 是否已满?

c++ - 寻找设计模式以减少虚拟方法的重载

c++ - 构造函数初始化列表中的约束检查

c++ - 子类成员变量作为初始化列表中主类构造函数的参数=崩溃?

c++ - 在构造函数初始化列表中初始化 stringstream 引用成员