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

标签 c++ qt

我需要检查 QSet 是否包含某个值,如果不存在,我想插入它并返回一个 bool 值,指示该值是否已插入 (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;

关于c++ - 有效地测试 QSet 是否包含元素,如果不存在则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47381099/

相关文章:

C++ Winsock编程,没有收到HTTP协议(protocol)的响应

c++ - QTimer 与 Windows 8 的奇怪准确性

c++ - 是否可以选择在 Qt 中第二次运行同一个程序?

c++ - 如何查找 ActiveX 控件生成的事件的调度 ID

C++ 链接 Lapack

c++ - GTKMM 错误 : Void Value Not Ignored As it Ought to Be

c++ - 设计一个 "renderer",是否有必要使用 OpenGL 以外的 API?

c++ - Qt 的持续构建系统

qt - QML 导入模块

python - 如何在 PyQt 中编写图像按钮?