如何在c++的基本成员初始化节中初始化std::map
how do I initialize a std::map in the base member initialization section in c++?
基本上,我有一个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()) {}
};
相关文章:
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 使用通用值初始化 std::map,不重复
- 初始化 std::vector 替换为单大括号而不是双大括号
- 在构造函数中使用可变参数初始化 std::tuple
- 使用大括号初始化 std::vector 使用初始值设定项列表
- 为什么初始化 std::vector 时不能使用模板整数?
- 如何在构造函数参数中初始化"std::set"?
- 初始化 std::数组 of Eigen::Map
- 我可以列表初始化 std::vector 并完美转发元素吗?
- 在 C++20 之前和之后初始化 std::atomic
- C++初始化 std::function 时如何将占位符绑定到引用/引用参数?
- 如何初始化 std::向量的映射?
- 如何在构造函数初始值设定项列表中使用 n 个元素初始化 std::vector<std::time_t>
- 使用范围库初始化 std::vector
- 如何在类的初始值设定项列表中初始化 std::array,而不对数组的大小进行硬编码
- 我是否需要在构造函数中显式初始化 std::unique_ptr?
- 如何使用派生类类型数据初始化 std::shared_ptr?
- 为什么我必须在初始化 std::array<SomeStruct, size> 时指定每个项目的类型C++
- 根据指针条件初始化std::vector
- 正在使用unique_ptr初始化std::vector