如何在第一个不丢失元素但只返回结果的QSets之间的2 QSets之间设置一个交集?
原因是我试图与一些集合执行许多交叉,但必须找出在过程中元素丢失的困难方式。
QSet<int> a, b;
a.insert(1);
a.insert(2); // { 1, 2 }
b.insert(1); // { 1 }
a.intersection(b); // { 1 }
a // { 1 }发布于 2013-09-18 22:27:20
intersect修改应用它的集合。如果您不想这样做,就不要使用intersect。
重载的operator&返回一个新的QSet,它是两个QSets的交集,还有一个赋值操作符operator&=。
QSet是基于散列的.如果您正在处理一组小整数,并且考虑到效率,QBitArray可能会更好地工作。
发布于 2013-09-18 22:22:57
如果不希望复制原始集,然后将其相交,则可以创建一个函数,该函数从交集创建一个新集:
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;
}https://stackoverflow.com/questions/18883230
复制相似问题