Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如何在第一个不丢失元素的 2 个 QSet 之间进行交集,而只返回结果交集?
原因是我试图与一些集合执行许多交集,但不得不找出在这个过程中元素丢失的艰难方式。
QSet<int> a, b; a.insert(1); a.insert(2); // { 1, 2 } b.insert(1); // { 1 } a.intersection(b); // { 1 } a // { 1 }
intersect修改您应用它的集合。如果您不想这样做,请不要使用intersect.
intersect
重载operator&返回一个新的,它是两个sQSet的交集。QSet还有一个赋值运算符operator&=。
operator&
QSet
operator&=
QSet是基于哈希的。如果您正在使用小整数集并且您关心效率,则QBitArray可能会更好。
QBitArray
如果您不想复制原始集合然后将其相交,则可以创建一个从相交中创建新集合的函数:
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; }