如何在 c++ 中创建结构向量的映射
How to create the map Of the vector of structure in c++
我有一个地图std::map<int, std::vector<Data>>myMap
,我的结构定义如下。
struct Data
{
int x;
int z;
int y;
};
在 myMap 键是 int,值是结构的向量,我不希望在插入地图时创建临时向量或结构。有什么想法可以实现它吗?
一种方法是使用emplace
和std::move
myMap.emplace(key, std::move(myVec));
通过使用std::move
可以在地图外部构造矢量,然后将该矢量移动到地图中而无需进行任何复制。
无需显式启动映射中的值。当您通过映射中不存在的operator[]
访问密钥时,将使用默认初始化值(在您的情况下为空std::vector
(添加该密钥。
所以你可以安全地做一些类似的事情
myMap[0].push_back(myInstanceOfData)
即使键 0 不存在。然后,它将与一个空向量一起创建为值,并将值myInstanceOfData
推送到地图内的这个新向量。
正如前面的答案所说,您可以使用 emplace 和 std::move,但要测试它或任何其他解决方案是否有效,我建议您覆盖构造函数、复制构造函数、析构函数和赋值运算符来分别打印创建、复制、销毁、赋值等内容,以便您了解实际情况并提高性能。
相关文章:
- 将结构向量排序为子组
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 如何在 c++ 中创建结构向量的映射
- 带unique_ptr的结构向量
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么
- C++对结构向量进行排序
- 在C++中对结构向量进行排序时出现问题
- 将结构向量保存到文件中,并从C++文件中读取结构向量
- 搜索并替换结构向量中的值
- 在结构向量中查找最接近的值
- 清除结构向量时会发生什么?
- 如何从 node-ffi 调用 c++ 中以结构向量作为参数的方法?
- 对结构向量进行两次排序
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 如何二进制搜索结构向量并在适当的索引处插入
- 结构向量中自定义结构函数的内存使用
- C++11-在结构向量中修改结构的成员
- 我正在尝试找到一个特定的结构成员,该成员是使用 lambda 函数的结构向量
- 在结构向量中搜索一个数据成员,然后打印匹配的所有数据成员