gpt4 book ai didi

c++ - 如何更新 map> 类型的 map ?

转载 作者:太空宇宙 更新时间:2023-11-04 16:08:08 25 4
gpt4 key购买 nike

我需要更新 map<string, vector<int>> 类型的 map .我创建了这个函数:

// INPUT: d - original map, key - key to be updated, 
// new_val - value that will be appended to d[key]
// OUTPUT: vector<int> which is the updated value of d[key]
vector<int> update_value(map<string, vector<int>> d, string key, int new_val) {
map<string, vector<int>>::iterator it = d.find(key);
vector<int> current_vec;
int prev_len = current_vec.size();
if (it != d.end()) {
current_vec = it->second;
current_vec.push_back(new_val);
return current_vec;
}
assert(prev_len + 1, current_vec.size()); // this fails
return current_vec;
}

我总是得到断言失败。

执行此操作的正确方法是什么?

最佳答案

你的断言总是会失败,因为 current_vec 总是空的,以防 key 在 map 中找不到。我建议您删除此临时 vector ,并处理未以其他方式(例如插入)找到 key 的情况。

您还需要通过引用传递您的结构 d 以便它得到更新

vector<int>& update_value(map<string, vector<int>>& d, string key, int new_val) {
map<string, vector<int>>::iterator it = d.find(key);
if (it != d.end()) {
it->second.push_back(new_val);
}
else {
vector<int> v;
v.push_back(new_val);
d.insert(make_pair(key, v));
return d[key];
}
return it->second;
}

关于c++ - 如何更新 map<string, vector<int>> 类型的 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31962706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com