我的情况是我有一个带有一个键和两个值的地图。
std::map<std::string, std::pair<double, double> > myMultiValueMap
取决于我需要更新一个值或另一个值的条件。
我正在寻找插入/找到密钥并更新此地图中的值的语法
是的我之前在地图上使用了插入,但在多值地图上不确定
std::map<std::string,double> myMap;
myMap.insert(std::make_pair("12345",0.00));
并查找和更新
std::map<std::string,double>::iterator it = myMap.find(("12345");
答案 0 :(得分:1)
std::map
需要两个模板参数,一个键和一个值类型。但是你可以使用任意类型来表示“价值”。
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);
答案 1 :(得分:1)
在项目中插入项:
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
中的示例答案 2 :(得分:0)
我喜欢bkausbk的答案,并且会对此答案发表评论,但没有代表。 Map有时会需要默认的构造函数。我从another SO post知道这一点。我可以通过设置默认参数来使其工作(该帖子还有其他解决方案)
因此我将bkausbk的答案中的构造函数更改为:
TestValue(int v1 = 0, int v2 = 0, int v3 = 0) : Value1(v1), Value2(v2), Value3(v3) {}