STL各个容器性能详细比较
写入40M的int变量
容器 | 内存 | 写入用时 | 从头部移除用时 |
---|---|---|---|
vector | 47M | 5 秒 | |
list | 739M | 21秒 | 69 秒 |
deque | 217M | 4 秒 | 2203毫秒 |
set | 821M | 137秒 | |
map | 905M | 136秒 |
从上面的数据来看写入用时vector和deque很快,因为他们内存分配次数少,关联容器和list都是一个一个分配的,一个一个分配也会造成内存碎片,内存利用率低。
每次在中间插入数据,写入40M的int变量
容器 | 时间 |
---|---|
deque | 太慢不知道什么时候可以完成 |
list | 47秒 |
说明在中间插入或者删除list很快,在头部或者尾部要比deque慢很多
相关推荐
-
VS2008无法直接查看STL值的解决方法
安装完visual studio之后你可能的调试时看到的STL的内容是下面这样的: 而你更希望看到下面这样的调试显示: 那么,如何让vs2008显示成下面的样子呢?其实就说一项配置的问题. 把下面蓝色的一项"在变量窗口中显示对象的原始结构" 取消 勾选. 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们.
-
C++ 关于STL中sort()对struct排序的方法
前言 一直没有系统去看过c++,因为懂得一些c的基本语法,在实际编程中用到c++,只能用到哪些看哪些,发现这样虽然能够完成大部分工作,但是有时候效率实在太低,比如说这节要讲的Std::sort()函数的使用,调了半天才调通.开通c/c++序列博客是记录在使用c++中一些难题,避免以后重犯错,当然以后会尽量挤出时间来较系统学习下c++. 开发环境:QtCreator2.5.1+OpenCV2.4.3 实验基础 首先来看看std中的快速排序算法sort的使用方法: template <class R
-
STL常用容器详细解析
STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的常用容器包括:顺序性容器(vector.deque.list).关联容器(map.set).容器适配器(queue.stac). 1.顺序性容器 (1)vectorvector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问.由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢
-
c++ STL容器总结之:vertor与list的应用
STL提供六大组件,彼此可以组合套用 1.容器(containers):各种数据结构,如vertor,list,deque,set,map.从实现的角度来看,STL容器是一种class template 2.算法(algorithms):各种算法如sort,search,copy,earse.STL算法是一种 function template. 3.迭代器(iterators):扮演容器与算法之间的胶合剂,是所谓的"泛型指针".所有STL容器都有自己的专属的迭代器. 4.仿函数(fu
-
C++在成员函数中使用STL的find_if函数实例
本文实例讲述了C++在成员函数中使用STL的find_if函数的方法.分享给大家供大家参考.具体方法分析如下: 一般来说,STL的find_if函数功能很强大,可以使用输入的函数替代等于操作符执行查找功能(这个网上有很多资料,我这里就不多说了). 比如查找一个数组中的奇数,可以用如下代码完成(具体参考这里:http://www.cplusplus.com/reference/algorithm/find_if/): #include <iostream> #include <algori
-
在JSTL EL中处理java.util.Map,及嵌套List的情况
在方括号中指定键,并将相应的值作为表达式的值返回.例如,表达式 ${map['key']} 返回与 map标识符所引用的 Map 中的 "key" 键相关联的值. 当forEach 的items属性中的表达式的值是java.util.Map时,则var中命名的变量的类型就是 java.util.Map.Entry.这时var=entry的话,用表达式${entry.key}取得键名. 用表达${entry.value}得到每个entry的值.这是因为java.util.Map.Entr
-
stl容器set,map,vector之erase用法与返回值详细解析
总结本人在工作中经验教训. 在使用 list.set 或 map遍历删除某些元素时可以这样使用: 正确使用方法1 复制代码 代码如下: std::list< int> List; std::list< int>::iterator itList; for( itList = List.begin(); itList != List.end(); ) { if( WillDelete( *itList) ) {
-
STL list链表的用法详细解析
本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂.不失为STL的入门文章,新手不容错过! 0 前言1 定义一个list2 使用list的成员函数push_back和push_front插入一个元素到list中3 list的成员函数empty()4 用for循环来处理list中的元素5 用STL的通用算法for_each来处理list中的元素6 用STL的通用算法count_if()来统计list中的元素个数7 使用count_if()的一个更
-
深入解析C++ STL中的常用容器
STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的常用容器包括:顺序性容器(vector.deque.list).关联容器(map.set).容器适配器(queue.stac). 1.顺序性容器 (1)vectorvector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问.由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢
-
关于STL中的map容器的一些总结
一.关于map的介绍 map是STL的一个容器,和set一样,map也是一种关联式容器.它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,有助于我们处理一对一数据.这里说下map内部数据的组织,map内部是自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的.学习map我们一定要理解什么是一对一的数据映射?比如:一个班级中,每个学生的学号跟他的姓名就存
随机推荐
- zend框架实现支持sql server的操作方法
- dos或wamp下修改mysql密码的具体方法
- Android内存泄漏排查利器LeakCanary
- JS+FLASH幻灯片播放图片脚本,整理了代码,使得调用更加方便!
- 响应鼠标变换表格背景或者颜色的代码
- JSP中隐式对象用法实例
- Android 软键盘弹出时把原来布局顶上去的解决方法
- 数据库中的内容字段被挂马的替换方法 SQL注入
- JQuery 控制内容长度超出规定长度显示省略号
- Android多线程及异步处理问题详细探讨
- C#实现复杂XML的序列化与反序列化
- C++编程中的const关键字常见用法总结
- JS计算距当前时间的时间差实例
- vue2.0实现前端星星评分功能组件实例代码
- 解决android studio android monitor打不开的问题
- Redis获取某个大key值的脚本实例
- 将python文件打包成EXE应用程序的方法
- PHP从零开始打造自己的MVC框架之路由类实现方法分析
- Gauss-Seidel迭代算法的Python实现详解
- vue使用高德地图根据坐标定位点的实现代码