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

时间:2017-11-19 19:30:14

标签: c++ qt

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

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

1 个答案:

答案 0 :(得分:2)

好的,我发布问题后立即意识到这很容易。无论如何,我想我会为别人保留这个问题。

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