我有两个 QList,需要确定它们的交集(在这种情况下是两个 QStringList,但我认为只要 T 实现了 operator==(),这适用于每个容器)。
什么是在 Qt 中确定列表之间交集的方法?
编辑:
顺序和重复不是问题。我只是寻找存在于两个列表中的项目。
什么是在 Qt 中确定列表之间交集的方法?
编辑:
顺序和重复不是问题。我只是寻找存在于两个列表中的项目。
这取决于你想要实现什么目标。如果你在处理列表,那么重复条目和排序等因素就会产生影响。如果你只想知道这两个列表有哪些元素是共同拥有的,你可以这样做:
QSet<QString> intersection = list1.toSet().intersect(list2.toSet());
#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....这正是我正在寻找的。
希望这能帮助到某人。