我需要检查QSet
是否包含某个值,如果它不存在,我想插入它并返回一个布尔值,指示值是否已插入(true
)或是否它已经存在(false
)。我的问题是如何有效地做到这一点。以下代码实际计算散列并搜索该集合两次。这是非常低效的。
QSet<QString> names;
bool inserted = false;
QString name = "Dave";
if (!names.contains(name))
{
inserted = true;
names.insert(name);
}
答案 0 :(得分:2)
好的,我发布问题后立即意识到这很容易。无论如何,我想我会为别人保留这个问题。
int size = names.count();
names.insert(name);
bool inserted = names.count() > size;