c++ - c++98 如何通过特定字段在 QList 中查找对象?

标签 c++ qt find qt-creator qlist

我有这个简单的类:

class SomeClass
{
   QString key;
   QString someData;
   int otherField;
   public:
      QString getKey() { return key };
};

我有这个列表:

QList<SomeClass*> myList;

我想检查 myList 是否包含 key = "mykey1"的对象;

for(int i = 0; i < myList.size(); i++)
{
  if(myList.at(i)->getKey() == "mykey1") 
  { 
      //do something with object, that has index = i
  }
}

是否有任何标准函数可以循环并返回此对象或索引或指针? , 所以我不需要使用循环

最佳答案

您可以使用 std::find 算法。

您需要为 std::find 重载 operator==

class SomeClass
{
     //Your class members...

public: 
    bool operator==(const SomeClass& lhs, const SomeClass& rhs)
    {
      return lhs.key == rhs.key;
    }
}

然后找到您的 key 使用:

if (std::find(myList.begin(), myList.end(), "mykey1") != myList.end())
{
   // find your key
}

关于c++ - c++98 如何通过特定字段在 QList 中查找对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45658250/

相关文章:

c++ - 从 lua_pcall(L, 0, 0, 0) 获取所有错误

c++ - 未调用 QT 析构函数

c++ - 在 Qml 场景下使用 OpenGL 渲染时出现奇怪的错误

c++ - COM dll 优于 C++ dll

python - 延迟加载子项 Qtreeview

Qt QML 设置未保存/应用

shell - Unix命令获取远程主机上的目录列表

java - 无法找到或加载主类、环境变量

regex - Linux - 在路径中的每个斜杠后查找与正则表达式匹配的结果

c++ - 初始化 vector 时出现令人讨厌的错误