c – 使用哪个STL容器?

栏目: C++ · 发布时间: 7年前

内容简介:翻译自:https://stackoverflow.com/questions/10566826/which-stl-container-to-use

参见英文答案 > In which scenario do I use a particular STL container? 8个

我应该使用哪个STL容器:

>定期插入和删除数据.

>随机定期访问数据.

例如:数据集(4,10,15)如果我想找到最接近9的数字,那么它应该返回10.

>我只存储一个整数.

>需要进行排序

>可以转到100k数据集

我想过使用矢量,但矢量插入和移除是昂贵的.

vector<int>

如果我要使用list,我必须在到达数据之前访问O(n)元素.

list<int>

我正在考虑使用set,因为如果它被 排序 会很好,但我不太确定使用SET的效率

所以我希望有人能给出一个好的解决方案!

我认为你应该检查这个SO帖子: In which scenario do I use a particular STL container?

小尺寸矢量将适合大多数情况,无论你打算做什么.

虽然图表是一个指南,但定期访问容器的事实并不影响容器的选择,你存储int的事实并不重要,除非你关心容器的大小,在这种情况下,指针的开销是多少列表容器或地图对你有影响吗?

排序是通过映射自动完成的,但如果容器大小足够小以适应内存,则排序向量和列表可以非常快.

数据插入针对容器中任何位置的列表和映射进行了优化,对于地图,您可以获得它将自己排序的好处,但如果大小足够小,那么使用新条目构建新向量可能会非常快.

您可能还想考虑哈希映射,您仍然最好对自己的代码进行分析,然后尝试再次猜测什么是最佳的,具体取决于您的使用情况,您确实需要测量和分析.

你也可以决定一个STL<map>是一个足够好的平衡或<set>并使用这些容器,因为它们会自动对插入和删除进行排序,并且查找速度很快但是在每个条目中维护指针的开销增加了与向量相比使用的内存大小,如果你不关心这个你可以考虑这些容器.

如果它很重要,那么测试和分析并比较每个容器的性能,你会惊讶于代码将如何执行你的假设.

翻译自:https://stackoverflow.com/questions/10566826/which-stl-container-to-use


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

淘宝、天猫电商运营百科全书

淘宝、天猫电商运营百科全书

刘涛 / 电子工业出版社 / 2016-7 / 59.00元

有人说淘宝、天猫上90%的卖家不赚钱,我认为说得有点大了。因为如果说大家都不赚钱或者在亏钱,为什么去年在做店铺的卖家,今年还在继续?那些不赚钱的卖家,多数是没意识到市场的变化,还在用原来的套路运营店铺。市场在变,但卖家的思路却没有转变,不赚钱也在情理之中,因为淘宝、天猫的玩法变了。做店铺就是好比一场“打怪”升级的游戏,每次的升级都需要强大的装备与攻略。优胜劣汰,能活下去并且能赚钱的卖家,都是在不停......一起来看看 《淘宝、天猫电商运营百科全书》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具