社区
C++ 语言
帖子详情
如何能够快速合并两个stl的set呢?
firstilo
2006-10-17 02:52:43
set好像没有类似merge的函数
要想合并两个set的内容,怎样做效率会比较高呢?
...全文
2985
17
打赏
收藏
如何能够快速合并两个stl的set呢?
set好像没有类似merge的函数 要想合并两个set的内容,怎样做效率会比较高呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
taodm
2006-10-18
打赏
举报
回复
你看一下stl源码剖析就知道区别了
merge保留重复。
firstilo
2006-10-17
打赏
举报
回复
其实具体的性能参数我现在也说不上来,
我现在就是觉得有点抓瞎的感觉。。。
set_union和merge有什么区别呢?
taodm
2006-10-17
打赏
举报
回复
实时系统,数据量很大,这个是废话,你还是没有说出具体性能指标差了多少,这么优化是抓瞎。
用排序vector代替set,用set_union(a.begin(), a.end(), b.begin(), b.end(), inserter(c, c.end()));是个还算可行的方案。
sinall
2006-10-17
打赏
举报
回复
#include <set>
#include <iterator>
#include <iostream>
#include <algorithm>
using namespace std;
int main(void)
{
set<int> a;
a.insert(1);
a.insert(6);
a.insert(5);
set<int> b;
a.insert(2);
a.insert(7);
a.insert(9);
set<int> c;
set_union(a.begin(), a.end(), b.begin(), b.end(), inserter(c, c.end()));
copy(c.begin(), c.end(), ostream_iterator<int>(cout, " "));
return 0;
}
另外,最好用排序vector替代set。
见《Effective STL》“条款23:考虑用有序vector代替关联容器”
firstilo
2006-10-17
打赏
举报
回复
实时系统,数据量很大
就是会有很多小的数据集合,每个小的数据集合里面有可能会有很多元素
taodm
2006-10-17
打赏
举报
回复
哈哈,如果s1.insert( s2.begin(), s2.end() );还不能满足你的效率,你就得说你到底要求啥程度的效率了。
firstilo
2006-10-17
打赏
举报
回复
s1.insert( vect1.begin(), vect.end() );
和
s1.insert( s2.begin(), s2.end() );
比起来还是会快一些吧?
我现在的问题是
for(s2_iter = s2.begin(); s2_iter != s2.end(); ++s2_iter)
{
si.insert( *s2_iter );
}
的效率不能让人满意,需要找到更好的办法
即便修改数据结构也在所不惜
请各位指教!
哇哇大哭的谢!
taodm
2006-10-17
打赏
举报
回复
s1.insert( s2.begin(), s2.end() );
和
for(s2_iter = s2.begin(); s2_iter != s2.end(); ++s2_iter)
{
si.insert( *s2_iter );
}
呃,s1.insert( s2.begin(), s2.end() );只会高,不会低。但,也高得很有限。
一般不必考虑。
firstilo
2006-10-17
打赏
举报
回复
s1.insert( s2.begin(), s2.end() );
和
for(s2_iter = s2.begin(); s2_iter != s2.end(); ++s2_iter)
{
si.insert( *s2_iter );
}
比起来,效率会高一些么?
Wolf0403
2006-10-17
打赏
举报
回复
去看 Effective STL 吧。
firstilo
2006-10-17
打赏
举报
回复
哦,hash_set和set有什么关系么?
哪个插入效率更高?
lw1a2
2006-10-17
打赏
举报
回复
set本来就是排好序的
firstilo
2006-10-17
打赏
举报
回复
这个是要求s1和s2都是有序的吧?
如果无序怎么办呢?
taodm
2006-10-17
打赏
举报
回复
s1.insert(s2.begin(), s2.end());
lw1a2
2006-10-17
打赏
举报
回复
泛型的,一般比你自己写的要高,去查查吧
sinall
2006-10-17
打赏
举报
回复
-_-!!!
set_union
具体
set_union(s1.begin(), s1.end(), s2.begin(), s2.end(), inserter(s3, s3.begin()));
sinall
2006-10-17
打赏
举报
回复
set_union
具体
set_union(s1.begin(), s1.end(), s2.begin(), s2.end(), inserter(s3));
C++
STL
STL
实战开发精讲视频
《C++ 模板技术与
STL
实战开发》主讲:丁宋涛 泛型编程(Generic Programming)是一种全新的程序设计思想,它和
STL
是现代C++的精髓。可以说,不会
STL
很难称得上掌握了现代C++编程。
STL
是一个高效的C++程序库,它被容纳于C++标准程序库(C++ Standard Library)中,该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。
STL
应用 ——
set
/ multi
set
STL
应用 ——
set
/ multi
set
STL
set
用法小结(交并差补)
常见的方法 略 特点
set
和map按照key的字典序维护树,当题目要求按某个量的字典序时,可以插入
set
/map中,再输出。
set
的增删查改都是logn 方法介绍 count max_size() upper_bound() lower_bound() 结构体的
set
set
的
合并
set
的交并差补 交并差补四个函数的参数相同,常用版本中都是5个参数,
set
_xxxx(
set
1...
STL
set
>集
合并
,交,差,对称差总结
有关
STL
set
关于集
合并
,交,差,对称差总结: merge(), // 归并
两个
序列,元素总个数不变,只是将两上子有序序列归并为一个有序序列。
set
_union(), // 求集合A,B的并。
set
_difference(), // 求集合A,B的差
【转】
STL
算法-
合并
(集合)
以下内容转载自:http://www.cppblog.com/zhangyq/archive/2012/02/05/164060.html 对于
STL
合并
相关算法有非常详细的总结,其中有几个大名鼎鼎的集合算法,它们是: (1)求交集:
set
_intersection() (2)求并集:
set
_union() (3)求差集:
set
_difference() --------
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章