映射一个键两个值
c++ STL Map one key two values
我有一个情况,我有一个映射与一个键和两个值,例如
std::map<std::string, std::pair<double, double> > myMultiValueMap
根据条件,我需要更新一个值或另一个值。
我正在寻找语法来插入/查找键并更新此映射中的值
是的,我以前在地图上使用过插入,但不确定多值地图
std::map<std::string,double> myMap;
myMap.insert(std::make_pair("12345",0.00));
查找和更新too
std::map<std::string,double>::iterator it = myMap.find(("12345");
std::map
需要两个模板参数,一个键和一个值类型。但是,您可以为"value"使用任意类型。
struct TestValue {
int Value1;
int Value2;
int Value3;
TestValue(int v1, int v2, int v3) : Value1(v1), Value2(v2), Value3(v3) {}
};
std::map<std::string, TestValue> myMap;
myMap["test"] = TestValue(1, 2, 3);
在映射中插入项:
myMultiValueMap[strKey] = make_pair(firstDouble, secondDouble);
检查是否存在项:
if( myMultiValueMap.find(strKey) != myMultiValueMap.end() ) {
// Item Exists
}
更新项:
myMultiValueMap[strKey].first = newFirstDouble;
myMultiValueMap[strKey].second = newSecondDouble;
你应该使用
using namespace std;
请花时间阅读cplusplus.com上的示例
我喜欢bkausbk的答案,并且会对答案进行注释,但没有rep. Map有时会出现需要默认构造函数的问题。我从另一个SO帖子中知道这一点。我通过设置默认参数(该帖子有其他解决方案)让它工作
因此,我将bkausbk的答案中的构造函数更改为:TestValue(int v1 = 0, int v2 = 0, int v3 = 0) : Value1(v1), Value2(v2), Value3(v3) {}
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 如何返回一个类的两个对象相加的结果
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 为什么C++在将一个对象复制到另一个对象时需要对这两个对象进行低级常量限定
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 我可以创建一个包含两个变量的 for 循环,但时间复杂度仍然为 O(n) 吗?
- 使用一个循环与两个循环
- 创建一个棋盘格或"Interweave"两个链接列表。IE 更改两个链表的指针
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 在Qt/C++中从一个代码构建两个略有不同的项目
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 如果两个静态库使用相同的另一个静态库,如何避免"LNK2005 Already Defined error"?
- 给定一个大小为 N 的数组 S,检查是否可以将序列拆分为两个序列
- 将两个 cpp 文件合并为一个 cpp 文件
- 为什么将两个浮点数相加会得到一个整数C++?
- 我如何创建一个列表,然后从中创建两个列表,其中一个用于偶数,另一个用于奇数?
- Makefile 创建两个库 - 一个依赖于另一个