gpt4 book ai didi

c++ - 从迭代器更改 std::map 中的值

转载 作者:太空狗 更新时间:2023-10-29 20:17:14 24 4
gpt4 key购买 nike

我的应用程序合并了两个 std::map实例。如果没有重复,则合并完成而无需干预。但是,如果检测到重复项,则该方法会询问是否应忽略或覆盖新值。 (此查询可能由规则表、用户消息框或其他一些逻辑来回答……它只是从具有 bool confirm() const 方法的纯虚类派生的类的实例。)

如果插入失败,并且他们决定覆盖现有条目,我已经有一个迭代器指向要更新的正确项目。我可以使用这个迭代器直接更新值,还是必须调用 operator[]并接受另一个查找的打击?

// typedef std::map<Foo, Foo, Compare> Dictionary;
// Dictionary this_dictionary, other_dictionary;
for (Dictionary::const_iterator i = other_dictionary.begin();
i != other_dictionary.end();
++i) {
std::pair<Dictionary::iterator,bool> ret = this_dictionary.insert(*i);
if (!ret.second && confirmer.confirm()) {
// ???
}
}

最佳答案

您需要在插入的返回中使用 Dictionary::iterator 而不是 Dictionary::const_iterator

for (Dictionary::const_iterator i = other_dictionary.begin();
i != other_dictionary.end();
++i) {
// Use standard iterator here
std::pair<Dictionary::iterator,bool> ret = this_dictionary.insert(*i);
if (!ret.second && confirmer.confirm()) {
ret.first->second = i->first;
}
}

关于c++ - 从迭代器更改 std::map 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7175959/

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