如何在 2 个 QSet 之间求交集,其中第一个 QSet 不会丢失元素,而只返回结果交集?
原因是我试图与某些集合执行许多交集,但必须找出在这个过程中元素丢失的困难方法。
QSet<int> a, b;
a.insert(1);
a.insert(2); // { 1, 2 }
b.insert(1); // { 1 }
a.intersection(b); // { 1 }
a // { 1 }
如果您不想复制原始集合然后将其相交,您可以创建一个函数,从交集创建一个新集合:
template<class T>
QSet<T> intersectSets(const QSet<T>& a, const QSet<T>& b) {
QSet<T> result;
foreach(const T& value, a)
if (b.contains(value))
result.insert(value);
return result;
}