C++ 获取地图中的项目并将其设置为 unordered_map 内的值?
C++ get and set item in map as value inside unordered_map?
std::unordered_map<string, tuple<int, vector<int>>> combos;
我想检索元组中的项目并增加或设置它们的值。
例如
if(v_intersection.size()==5){
string stringval = join(v_intersection, ",");
if (combos.find(stringval) == combos.end()) // if key is NOT present already
{
combos[stringval]get<0>(combos[stringval]) = 1; // initialize the key with value 1
}
else
{
combos[stringval]++; // key is already present, increment the value by 1
}
}
我想把int(元组的第一个参数)设为1,需要的时候再加1。
它不在 for 循环中,而是在 if 条件子句中。
怎么做?
我尝试了 combos[stringval]get<0>(combos[stringval]) = 1; 但它不起作用。
如果我想在该地图的矢量内添加项目怎么办?怎么做?
此外,如果您对如何使用带元组的嵌套地图以外的其他方法执行此操作有任何想法,请给我您的建议。
提前致谢!
不重复,请查收。有一些主题,但要求的不是以元组为值的嵌套映射。
std::get(std::tuple)
是一个以元组为参数的自由函数。所以你必须这样称呼它:get<INDEX>(some_tuple)
.
知道这一点,回答您的问题只是将元组从映射传递给该函数的问题。
I want to set int (the first parameter of tuple) to 1
std::get<0>(combos[stringval]) = 1;
and also increase it by 1 when needed.
std::get<0>(combos[stringval])++;
std::unordered_map<string, tuple<int, vector<int>>> combos;
我想检索元组中的项目并增加或设置它们的值。 例如
if(v_intersection.size()==5){
string stringval = join(v_intersection, ",");
if (combos.find(stringval) == combos.end()) // if key is NOT present already
{
combos[stringval]get<0>(combos[stringval]) = 1; // initialize the key with value 1
}
else
{
combos[stringval]++; // key is already present, increment the value by 1
}
}
我想把int(元组的第一个参数)设为1,需要的时候再加1。
它不在 for 循环中,而是在 if 条件子句中。
怎么做?
我尝试了 combos[stringval]get<0>(combos[stringval]) = 1; 但它不起作用。
如果我想在该地图的矢量内添加项目怎么办?怎么做?
此外,如果您对如何使用带元组的嵌套地图以外的其他方法执行此操作有任何想法,请给我您的建议。
提前致谢!
不重复,请查收。有一些主题,但要求的不是以元组为值的嵌套映射。
std::get(std::tuple)
是一个以元组为参数的自由函数。所以你必须这样称呼它:get<INDEX>(some_tuple)
.
知道这一点,回答您的问题只是将元组从映射传递给该函数的问题。
I want to set int (the first parameter of tuple) to 1
std::get<0>(combos[stringval]) = 1;
and also increase it by 1 when needed.
std::get<0>(combos[stringval])++;