社区
C++ 语言
帖子详情
如何能够快速合并两个stl的set呢?
firstilo
2006-10-17 02:52:43
set好像没有类似merge的函数
要想合并两个set的内容,怎样做效率会比较高呢?
...全文
3076
17
打赏
收藏
如何能够快速合并两个stl的set呢?
set好像没有类似merge的函数 要想合并两个set的内容,怎样做效率会比较高呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
笔试、面试题的文档
STL
说明.doc
STL
.doc 三十分钟掌握
STL
.doc
STL
面试题.doc
18个
STL
程序带你逐步了解
STL
18个
STL
程序带你逐步了解
STL
,由浅到难。
标准C C++
STL
参考手册中英文
两个
文档
标准C C++
STL
参考手册中英文
两个
文档
C++&
STL
快速
入门(7个简明教程)
C++&
STL
快速
入门,都是些简明教程,7个简明教程,如:三十分钟掌握
STL
标准模板库
STL
参考手册
stl
的参考手册,里面带有例子,为英文版,但是并不难懂,chm格式方便根据需要进行查找
C++ 语言
65,189
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章