如何初始化标准::映射项的向量
How can I initialize an std::vector of std::map items?
>我有以下内容:
#include <vector>
#include <map>
#include <string>
int main() {
std::vector<std::map<std::string, double>> data = {{"close", 14.4}, {"close", 15.6}};
return 0;
}
当我尝试编译时,出现以下错误:
g++ -std=c++11 -wall -pedantic ./test.cpp
./test.cpp:6:49:错误:没有匹配的构造函数来初始化"std::vector>"(又名 '矢量,分配器>,双精度>>"( std::vector> data = {{"close", 14.4}, {"close", 15.6}};
每个元素/对都需要一对额外的大括号:
std::vector<std::map<std::string, double>> data = {{{"close", 14.4}}, {{"close", 15.6}}};
^ ^ ^ ^
需要额外的一对大括号,因为std::map
元素在您的情况下属于 std::pair<const key_type, value_type>
型std::pair<const std::string, double>
。因此,您需要一对额外的大括号来向编译器表示std::pair
元素的初始化。
使用 3 个大括号而不是 2 个大括号。
std::vector<std::map<std::string, double>> data = {{{"close", 14.4}}, {{"close", 15.6}}};
这是查德说的。
相关文章:
- 如何在 c++ 中创建结构向量的映射
- 在C++中初始化向量映射的最有效方法
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 字符串共享内存映射的向量
- 具有 2 个分量的数组的特征映射到 3 的向量
- 当键值是 std 向量时,为什么使用 at in C++ 访问映射值如此缓慢?
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 如何初始化 std::向量的映射?
- 将一个向量映射到不同的对,即使向量映射到每对时是不同的?
- 如何从向量映射中迭代向量
- 当请求的键丢失时,有没有办法从向量映射返回 std::vector ref?
- 向量映射作为实例成员的C 地图
- 为什么内置排序无法对向量映射进行排序
- 使用派生类的向量映射调用其类的函数
- 使用派生类的向量映射
- 如何将const_cast的const指针向量映射到非常量指针向量
- 将字符串向量映射为整数
- 是否有可能创建一个向量映射,其中向量可以是任何类型
- 不能访问指针-向量映射元素
- c++从向量映射中获取一个向量