gpt4 book ai didi

c++ - 如何通过local_iterator删除boost unordered_map中的元素?

转载 作者:行者123 更新时间:2023-11-28 04:19:33 25 4
gpt4 key购买 nike

我正在使用 C++ boost unordered_map 哈希表。我可以使用 local_iterator 来遍历特定的桶。现在,我想删除这个桶中的一些元素。

ShmHashMap::local_iterator it = hash_table_->begin(bucket_idx);
while(it != hash_table_->end(bucket_idx)) {
if(it->second >= now_time) {
it++;
continue;
}
hash_table_->erase(it);// this usage is not supported
// although I can `hash_table_->erase(it->first)`, this usage is inefficient
it++;
}

那么,有没有办法通过local_iterator来删除元素?

最佳答案

假设 boost::unordered_map::erase 的工作方式与 std::unordered_map::erase 相同,则序列:

hash_table_->erase(it);
it++;

调用未定义的行为,因为 erase 使 无效。

但是你可以这样做:

it = hash_table_->erase(it);

因为 erase 返回被删除的迭代器之后的迭代器。

关于c++ - 如何通过local_iterator删除boost unordered_map中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55784853/

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