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

V.K*_*.K. 6 c++ qt

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

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

V.K*_*.K. 7

好的,在我发布问题后,我立即意识到这很简单。无论如何,我想我会把这个问题留给其他人。

int size = names.count();
names.insert(name);
bool inserted = names.count() > size;
Run Code Online (Sandbox Code Playgroud)