gpt4 book ai didi

c++ - 从 QHash 中删除元素范围

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

我使用 QHash 作为容器,我有一个任务是删除所有满足谓词的项目。起初我想使用 Erase-remove idiom事实证明,QHash 没有删除范围的选项,只有一个 function。通过迭代器删除单个元素。

std::unordered_map(概念上接近于 Qt 的 QHash)具有 function删除范围。

这意味着一个问题:为什么 QHash 没有类似的功能以及如何以最佳方式从 QHash 中删除满足谓词的项目?

最佳答案

根据评论,原来erase-remove idiom 不适用于QHash 容器。

因此,鉴于 QHash::erase 的描述,特别是它不违反散列中项目的顺序

Unlike remove() and take(), this function never causes QHash to rehash its internal data structure. This means that it can safely be called while iterating, and won't affect the order of items in the hash.

我们有以下代码来删除满足谓词的元素:

for( auto it = hash.begin(); it != hash.end(); )
{
if( pred(*it) )
{
it = hash.erase(it);
} else {
++it;
}
}

关于c++ - 从 QHash 中删除元素范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25761225/

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