首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不丢失元素的QSet交集

不丢失元素的QSet交集
EN

Stack Overflow用户
提问于 2013-09-18 22:11:51
回答 2查看 1.9K关注 0票数 0

如何在第一个不丢失元素但只返回结果的QSets之间的2 QSets之间设置一个交集?

原因是我试图与一些集合执行许多交叉,但必须找出在过程中元素丢失的困难方式。

代码语言:javascript
复制
QSet<int> a, b;
a.insert(1);
a.insert(2);         // { 1, 2 }
b.insert(1);         // { 1 }
a.intersection(b);   // { 1 }  
a                    // { 1 }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-18 22:27:20

intersect修改应用它的集合。如果您不想这样做,就不要使用intersect

重载的operator&返回一个新的QSet,它是两个QSets的交集,还有一个赋值操作符operator&=

QSet是基于散列的.如果您正在处理一组小整数,并且考虑到效率,QBitArray可能会更好地工作。

票数 8
EN

Stack Overflow用户

发布于 2013-09-18 22:22:57

如果不希望复制原始集,然后将其相交,则可以创建一个函数,该函数从交集创建一个新集:

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18883230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档