如何使用QHash::removeIf(谓词Pred)



Qt 6.1在其集合类QByteArrayQHashQListQMapQMultiHashQMultiMapQStringQVarLengthArray中引入了removeIf(Predicate Pred)方法。

但是我怎么写一个谓词呢?

QHash为例:

struct MishMash {
int i;
double d;
QString str;
enum Status { Inactive=0, Starting, Going, Stopping };
Status status;
};
QHash<QString, MishMash> myHash;
// ... fill myHash with key-value pairs
// Now remove elements where myHash[key].status == MishMash::Status::Inactive;
myHash.removeIf(???);

从文档…

函数支持接受类型参数的谓词Key, T>::迭代器,或std::pair

在这种情况下,您应该能够使用lambda沿着(未经测试)…

myHash.removeIf(
[](QHash<QString, MishMash>::iterator i)
{
return i.value().status == MishMash::Status::Inactive;
}
);

相关内容

  • 没有找到相关文章

最新更新