社区
C++ 语言
帖子详情
高手请进! 是不是Set为最优的选择?
log245
2009-11-06 09:25:09
现在有这样一个需求:
有一堆数值(INT)
总数不超过100
个; 程序运行中会经常对这堆数进行
插入,删除
操作,比如 插入100, 删除1000, 插入 3000, 还有经常的
遍历
打印输出, 只有这三个操作
是不是Set<INT> 做实现最好呢?
还是有更好的方法呢?
就要三个接口就行了
还望高手不吝指教 谢谢!
...全文
128
17
打赏
收藏
高手请进! 是不是Set为最优的选择?
现在有这样一个需求: 有一堆数值(INT) 总数不超过100个; 程序运行中会经常对这堆数进行插入,删除操作,比如 插入100, 删除1000, 插入 3000, 还有经常的遍历打印输出, 只有这三个操作 是不是Set 做实现最好呢? 还是有更好的方法呢? 就要三个接口就行了 还望高手不吝指教 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
老邓
2009-11-07
打赏
举报
回复
[Quote=引用 9 楼 mlee79 的回复:]
如果不需要有序,hash会更好... 规模这么小,考虑性能干嘛...
[/Quote]
小数据量,hash的效率不如红黑树(std::set)
猫已经找不回了
2009-11-07
打赏
举报
回复
[Quote=引用楼主 log245 的回复:]
现在有这样一个需求:
有一堆数值(INT)总数不超过100个; 程序运行中会经常对这堆数进行插入,删除操作,比如 插入100, 删除1000, 插入 3000, 还有经常的遍历打印输出, 只有这三个操作
是不是Set <INT> 做实现最好呢?
还是有更好的方法呢?
就要三个接口就行了
还望高手不吝指教 谢谢!
[/Quote]
红黑的插入,删除基本可以理解为O(logn)吧。遍历的话,如果对顺序没什么要求,那就无所谓了,因为除了hash,其他的都可以遍历,其实hash+索引也能遍历。
所以你用set吧。但是你这里对数值的排序什么的完全没有任何需求,其实就你这种情况,一个链表就搞定了。因为你也没说要随机访问。
不然的话,根据具体需求,红黑,堆都可以考虑。
do_fork
2009-11-07
打赏
举报
回复
[Quote=引用 14 楼 mlee79 的回复:]
引用 12 楼 loaden 的回复:
引用 9 楼 mlee79 的回复:
如果不需要有序,hash会更好... 规模这么小,考虑性能干嘛...
小数据量,hash的效率不如红黑树(std::set)
偶不这样认为, rb的插入,删除效率并不好,搜索的效率倒勉强, 而他的要求是快速的插入删除,显然rb不合适..
如此小的规模,合适的选择hash方式做二次探测,冲突的几率会非常小...
[/Quote]
hash不太适合遍历, 1000个数据,哪个性能更好,很难说,最好实际测试
mLee79
2009-11-07
打赏
举报
回复
[Quote=引用 12 楼 loaden 的回复:]
引用 9 楼 mlee79 的回复:
如果不需要有序,hash会更好... 规模这么小,考虑性能干嘛...
小数据量,hash的效率不如红黑树(std::set)
[/Quote]
偶不这样认为, rb的插入,删除效率并不好,搜索的效率倒勉强, 而他的要求是快速的插入删除,显然rb不合适..
如此小的规模,合适的选择hash方式做二次探测,冲突的几率会非常小...
love514425
2009-11-07
打赏
举报
回复
> Tag;
lori227
2009-11-07
打赏
举报
回复
对无重复数据的集合, 用set, 有重复数据的就用multiset吧
heis07w
2009-11-06
打赏
举报
回复
set是红黑树,优点在有序,没有要求有序那hash不行么
yutaooo
2009-11-06
打赏
举报
回复
不需要有序,为什么不用list ?
mLee79
2009-11-06
打赏
举报
回复
如果不需要有序,hash会更好... 规模这么小,考虑性能干嘛...
clhposs
2009-11-06
打赏
举报
回复
list容器了? 高效插入删除
mengde007
2009-11-06
打赏
举报
回复
插入的效率已经比较高了;
xhd3767
2009-11-06
打赏
举报
回复
好久没摸C++了..基本忘光..拿分..
老邓
2009-11-06
打赏
举报
回复
如果不考虑随机访问的效率,set明显要优于vector的!
老邓
2009-11-06
打赏
举报
回复
是的,最佳选择!
log245
2009-11-06
打赏
举报
回复
我现在想回避的是插入和删除时的二叉树操作 因为插入和删除 会很频繁的
谢谢!
log245
2009-11-06
打赏
举报
回复
没有了 就是频繁的插入删除. 还有偶尔的遍历一下而已
谢谢!
mengde007
2009-11-06
打赏
举报
回复
还有什么目的
JavaSE基础视频精讲⑮:
Set
和Map
本课程适用于零基础小白快速入门Java语言技术,通过课程学习可以清晰了解Java
Set
和Map。课程配套完整的(笔记+代码+作业)
用Robocod游戏来学习JAVA
Robocode(用游戏来学习Java技术还是用Java来玩游戏?)用你的JAVA编程技术来玩游戏吧!不会JAVA?那就用游戏来学习JAVA吧!...当时自己还完全不懂编程,总是向往着,那神秘的编程
高手
玩的游戏是怎样的? Robocod...
Robotcde游戏
Robocode(用游戏来学习Java技术还是用Java来玩游戏?) 用你的JAVA编程技术来玩游戏吧!不会JAVA?那就用游戏来学习JAVA吧!...当时自己还完全不懂编程,总是向往着,那神秘的编程
高手
玩的游戏是怎样的? Robo
c/c++笔试题
为什么要引入? 14 .存储过程是什么?有什么用?有什么优点? 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库。中用户通过指定存储过程的名字并给出参数...
通过游戏学java(适合初学者)
Robocode(用游戏来学习Java技术还是用Java来玩游戏?) 用你的JAVA编程技术来玩游戏吧!不会JAVA?那就用游戏来学习JAVA吧!...当时自己还完全不懂编程,总是向往着,那神秘的编程
高手
玩的游戏是怎样的? Robo
C++ 语言
64,647
社区成员
250,475
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章