首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较QList qt5.3中的项目

比较QList qt5.3中的项目
EN

Stack Overflow用户
提问于 2014-06-19 12:21:32
回答 2查看 3.3K关注 0票数 1

我正在尝试比较QList中的项目。下面是使用QPtrCollection的旧方法,但不能在qt3之后的版本中使用(据我所知)。

代码语言:javascript
复制
class gnyComponentList:public QList<gnyComponent>
{
protected:
    virtual int compareItems ( QPtrCollection::Item item1, QPtrCollection::Item item2 )
    { return (((gnyComponent *)item1)->getID()).compare(((gnyComponent *)item2)->getID());}
};

我不知道在Qt5.3中做这件事的好方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-19 12:47:31

您可以对std::equal对象使用QList算法,如下所示:

代码语言:javascript
复制
#include <QList>
#include <QString>

#include <algorithm> // for std::equal

struct Person
{
    QString firstName;
    QString lastName;
};

int main()
{
    QList<Person> personsA, personsB;
    // Populate personsA and personsB
    bool equal = std::equal( personsA.begin(), personsA.end(),
                             personsB.begin(),
                             []( const Person &a, const Person & b ) {
                                return a.firstName == b.firstName;
                             } );
}
票数 2
EN

Stack Overflow用户

发布于 2019-02-15 01:54:40

这是一个简单的方法,它比较每个项目而不进行排序。这是密码。

代码语言:javascript
复制
bool TeachTab::isTwoStringListEqual(const QStringList &dst,
                                const QStringList &src) {
  if (dst.size() != src.size())
    return false;
  for (int i = 0; i < dst.size(); ++i) {
    if (dst.value(i) != src.value(i)) {
      return false;
    }
  }
  return true;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24306497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档