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慢很多
相关推荐
-
C++在成员函数中使用STL的find_if函数实例
本文实例讲述了C++在成员函数中使用STL的find_if函数的方法.分享给大家供大家参考.具体方法分析如下: 一般来说,STL的find_if函数功能很强大,可以使用输入的函数替代等于操作符执行查找功能(这个网上有很多资料,我这里就不多说了). 比如查找一个数组中的奇数,可以用如下代码完成(具体参考这里:http://www.cplusplus.com/reference/algorithm/find_if/): #include <iostream> #include <algori
-
C++ 关于STL中sort()对struct排序的方法
前言 一直没有系统去看过c++,因为懂得一些c的基本语法,在实际编程中用到c++,只能用到哪些看哪些,发现这样虽然能够完成大部分工作,但是有时候效率实在太低,比如说这节要讲的Std::sort()函数的使用,调了半天才调通.开通c/c++序列博客是记录在使用c++中一些难题,避免以后重犯错,当然以后会尽量挤出时间来较系统学习下c++. 开发环境:QtCreator2.5.1+OpenCV2.4.3 实验基础 首先来看看std中的快速排序算法sort的使用方法: template <class R
-
在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
-
深入解析C++ STL中的常用容器
STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的常用容器包括:顺序性容器(vector.deque.list).关联容器(map.set).容器适配器(queue.stac). 1.顺序性容器 (1)vectorvector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问.由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢
-
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容器总结之: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
-
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中的map容器的一些总结
一.关于map的介绍 map是STL的一个容器,和set一样,map也是一种关联式容器.它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,有助于我们处理一对一数据.这里说下map内部数据的组织,map内部是自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的.学习map我们一定要理解什么是一对一的数据映射?比如:一个班级中,每个学生的学号跟他的姓名就存
-
VS2008无法直接查看STL值的解决方法
安装完visual studio之后你可能的调试时看到的STL的内容是下面这样的: 而你更希望看到下面这样的调试显示: 那么,如何让vs2008显示成下面的样子呢?其实就说一项配置的问题. 把下面蓝色的一项"在变量窗口中显示对象的原始结构" 取消 勾选. 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们.
-
STL常用容器详细解析
STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用.下面,我们就浅谈某些常用的容器.这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点.STL中的常用容器包括:顺序性容器(vector.deque.list).关联容器(map.set).容器适配器(queue.stac). 1.顺序性容器 (1)vectorvector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问.由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢
随机推荐
- 利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
- Shell监控iptables运行状态
- 实现MySQL回滚的Python脚本的编写教程
- jQuery通过Ajax向PHP服务端发送请求并返回JSON数据
- ADSL掉线八宗罪 处理方法招招应对
- Oracle收购TimesTen 提高数据库软件性能
- 实例详解JavaScript中setTimeout函数的执行顺序
- Android自定义View实现内存清理加速球效果
- Android实现拍照截取和相册图片截取
- Java锁之自旋锁详解
- 学习linux常用命令(推荐)
- web.py中调用文件夹内模板的方法
- sqlserver找回企业管理器的方法
- 提权,以MySQL之名
- 一个用来计算整星期日期的功能代码
- JavaScript数据绑定实现一个简单的 MVVM 库
- 利用rsync自动备份 完全配置方法 增加了ip限制
- 初次使用Docker的体验笔记总结
- Java如何将Excel数据导入到数据库
- PHP 可阅读随机字符串代码