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

7
我有两个 QList,需要确定它们的交集(在这种情况下是两个 QStringList,但我认为只要 T 实现了 operator==(),这适用于每个容器)。
什么是在 Qt 中确定列表之间交集的方法?
编辑:
顺序和重复不是问题。我只是寻找存在于两个列表中的项目。
2个回答

15

这取决于你想要实现什么目标。如果你在处理列表,那么重复条目和排序等因素就会产生影响。如果你只想知道这两个列表有哪些元素是共同拥有的,你可以这样做:

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

太棒了!谢谢Chris。很高兴再次见到你;-) - Freedom_Ben

0
更新至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....这正是我正在寻找的。

希望这能帮助到某人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接