获取两个QList之间的交集的Qt方法是什么



我有两个QList,需要为其确定交集(在这种特定情况下,是两个QStringList,但我认为只要T实现operator==(),这将适用于每个容器)。

确定列表之间交集的Qt方法是什么?

编辑:

秩序和重复不是问题。我只是在寻找两个列表中都存在的项目。

这完全取决于您想要完成什么。如果你在处理列表,重复的整数和排序等因素会起作用。如果你只想知道这两个列表有哪些共同点,你可以这样做:

QSet<QString> intersection = list1.toSet().intersect(list2.toSet());

2023年更新!

#include <QCoreApplication>
#include <QList>
#include <QDebug>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QList <int> A,B,C;
    A << 10 << 20 << 30;
    B << 2 << 7 << 10;
    QSet<int> Aset(A.begin(), A.end());
    QSet<int> Bset(B.begin(), B.end());
    QSet<int> Cset;
    Cset=Aset.intersect(Bset);
    return a.exec();
}

Cset包含10……这就是我想要的。

希望这能帮助到别人。

最新更新