我有两个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……这就是我想要的。
希望这能帮助到别人。