我需要检查 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)
好的,在我发布问题后,我立即意识到这很简单。无论如何,我想我会把这个问题留给其他人。
int size = names.count();
names.insert(name);
bool inserted = names.count() > size;
Run Code Online (Sandbox Code Playgroud)