有效地测试 QSet 是否包含元素,如果不存在,则插入

efficiently test if QSet contains element and insert if it is not there

本文关键字:如果 如果不 插入 不存在 元素 测试 QSet 是否 包含 有效地      更新时间:2023-10-16

我需要检查QSet是否包含某个值,如果它不存在,我想插入它并返回一个布尔值,指示该值是否已插入(true(或它是否已经存在(false(。我的问题是如何有效地做到这一点。下面的代码实际上计算哈希并搜索集合两次。这是非常低效的。

QSet<QString> names;
bool inserted = false;
QString name = "Dave";
if (!names.contains(name))
{
  inserted = true;
  names.insert(name);
}
好的

,在我发布问题后,我立即意识到这很容易。无论如何,我想我会把这个问题留给别人。

int size = names.count();
names.insert(name);
bool inserted = names.count() > size;