stl容器的遍历效率分析
来源:互联网 发布:兰印婚礼知乎 编辑:程序博客网 时间:2024/05/16 16:56
原创不易,转载注明
http://blog.csdn.net/yp541118319/article/details/60769214
写LeetCode时发现算法过程无差异,而最终的submission的runtime却有3ms的差别。而其中唯一不同的就是vector的遍历方式,一个使用了iterator,另一个使用了for。
查了一下各种经典,发现这微小的差异实际上是C与C++之间的差异。
遍历
最频繁的操作就是访问元素。而iterator使用的是迭代器递增,for使用的是at(i)或者[i]。
提供随机访问(RandomAccess)iterator的容器(vector, string, array)
iterator叠加步进,而for使用数组下标偏移,效率都是常量级的。在runtime上的细微差别就是C++封装(模板、类)带来的性能消耗。但是对比程序设计和编码上的便利,这种消耗还是很值得。
只提供双向访问(Bidirectional)iterator的容器(map, list, set)
两种方式的性能就大相庭径了。iterator依然是叠加步进,for使用的查询对应到具体的数据结构就是二叉树、链表等,这类数据结构的查询效率最高也达不到常量级,runtime上差异肯定随着数据量的增加而增大。
参考
http://blog.csdn.net/c1347623993/article/details/9209767
0 0
- stl容器的遍历效率分析
- STL容器的效率比较
- STL容器的效率比较
- STL容器效率比较
- STL容器效率比较
- STL容器效率比较
- STL容器效率比较
- STL容器效率比较
- STL容器效率比较
- 遍历vector容器的效率问题
- 遍历vector容器的效率问题
- 关于容器遍历效率的一点思考
- STL中vector容器中元素为自定义类型时的效率分析
- 遍历STL容器时迭代器的使用注意
- STL容器的遍历删除[zz]
- STL容器的遍历删除操作erase
- stl容器遍历测试
- 【容器】STL之效率比较
- 1352 集合计数(求解的个数)
- 机器学习开篇第一博
- Java的第20年:Java和我的故事
- 错误:Implicit super constructor Father() is undefined. Must explicitly invoke another constructor
- bzoj1682
- stl容器的遍历效率分析
- Unity3D之DontDestroyOnLoad的坑
- The first day to write to blog
- CRON expression syntax
- Android AutoLayout全新的适配方式 堪称适配终结者
- openjudge4010: 2011(java BigInteger)
- Java之ClassLoader读取文件
- PHP7新特性
- Java线程:概念与原理