STL之效率比較
1、vector
变长一维数组,连续存放的内存块,有保留内存。堆中分配内存;
支持[]操作,高效率的随机訪问;
在最后添加元素时,一般不须要分配内存空间,速度快;在中间或開始操作元素时要进行内存拷贝效率低;
vector高效的原因在于配置了比其所容纳的元素很多其它的内存,内存又一次配置会花非常多时间。
注:须要高效的随即存取,而不在乎插入和删除使用vector。
2、list
双向链表,内存空间上可能是不连续的,无保留内存。堆中分配内存;
不支持随机存取。開始和结尾元素的訪问时间快,其他元素都O(n)。
在不论什么位置安插和删除元素速度都比較快。安插和删除操作不会使其它元素的各个pointer。reference,iterator失效;
注:大量的插入和删除。而不关系随即存取使用list。
3、deque
双端队列,在堆上分配内存,一个堆保存几个元素。而堆之间使用指针连接;
支持[]操作,在首端和末端插入和删除元素比較快,在中部插入和删除则比較慢。像是list和vector的结合;
注:关心插入和删除并关心随即存取折中使用deque。
4、set&multiset
有序集合,使用平衡二叉树存储。依照给定的排序规则(默认按less排序)对set中的数据进行排序;
set中不同意有反复元素。multiset中执行有反复元素;
两者不支持直接存取元素的操作;
由于是自己主动排序,查找元素速度比較快。
不能直接改变元素值。否则会打乱原本正确的顺序,必须先下删除旧元素,再插入新的元素。
5、map&multimap
字典库,一个值映射成还有一个值。使用平衡二叉树存储,依照给定的排序规则对map中的key值进行排序。
map中的key值不同意反复,multimap中的key同意反复。
依据已知的key值查找元素比較快;
插入和删除操作比較慢。
STL之效率比較的更多相关文章
- CMap与hash_map效率对照
CMap与hash_map底层均採用hash stable实现,CMap是MFC提供的模板类.hash_map尽管眼下并未纳入C++标准模板类库,但差点儿每一个版本号的STL都提供了对应的实现.CMa ...
- STL之sort函数的用法
说明:本文仅供学习交流,转载请标明出处,欢迎转载! STL封装了一个排序算法,该算法相应的头文件为#include<algorithm>,我们能够依据须要对一个数组进行排序或者降序. so ...
- openCV 和GDI画线效率对照
一. 因为项目须要,原来用GDI做的画线的功能.新的项目中考虑到垮平台的问题.打算用openCV来实现.故此做个效率对照. 二. 2点做一条线,来測试效率. 用了相同的画板大小---256*256的大 ...
- vector数据查找方法
用STL编敲代码时常常使用vector容器来存储数据.当容器中的数据有序时我们能够採取两种方式: (1) 利用<algorithm>中的find函数进行查找: (2) 折半查找. 另外也能 ...
- C语言实现通用数据结构的高效设计
近期在阅读一个开源的C++代码.里面用到了大量的STL里面的东西.或许是自己一直用C而非常少用C++来实现算法的原因.STL里面大量的模板令人心烦.一直对STL的效率表示怀疑,但在网上搜到这样一个帖子 ...
- C++ Primer 学习笔记_41_STL实践与分析(15)--先来看看算法【下一个】
STL实践与分析 --初窥算法[下] 一.写容器元素的算法 一些算法写入元素值.在使用这些算法写元素时一定要当心.必须.写入输入序列的元素 写入到输入序列的算法本质上是安全的--仅仅会写入与指定输入范 ...
- Python 基礎 - 字典的操作使用
接下來介紹字典,這在未來工作上,會是很常使用的,就來好好了解一下唄- 字典是一個 key(鍵)-value(值) 的數據類型,可以儲存很多訊息 #!/usr/bin/env python3 # -*- ...
- String封装——读时共享,写时复制
碰到过一位一直怀疑C++标准库(STL)效率的人,他说STL效率太低,企业开发根本不会用.我是持反对意见的. 说这话的人,肯定没有做过大量的调查.没有调查就没有发言权. STL的效率是不低的,足够满足 ...
- Python 基礎 - pyc 是什麼
Python2.7 版中,只要執行 .py 的檔案後,即會馬上產生一個 .pyc 的檔案,而在 Python3 版中,執行 .py 的檔案後,即會產生一個叫 __pycache__ 的目錄,裡面也會有 ...
随机推荐
- Configure environment variables for different tools in jenkins
安装以下的工具,并在Jenkins中的Manage Jenkins-->Configure System-->Global Properties-->Environment Vari ...
- hdoj--2767--Proving Equivalences (scc+缩点)
Proving Equivalences Time Limit : 4000/2000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other ...
- discuz “欣” “衡” 用户不能注册 bug修改
discuz “欣” “衡” 用户不能注册 原因是 discuz 有这样一段代码 function check_username($username) { $guestexp = '\xA1\xA1| ...
- 利用ajax,canvas实现的测试php程序占用内存的代码
receive.php <?php $array["time"]=time();$array["memory"]=memory_get_usage();e ...
- eclipse中文汉字看不清或过小的问题解决方法!!
把字体修改为 中欧字体就可以看清汉字
- 浅析CLR的GC(垃圾回收器)
文章目录: 了解托管堆和GC GC高效的处理方式—代 特殊类型的清理 手动监控和控制对象生命周期 1.了解托管堆和GC 在面向对象环境中,每一个类型都代表了一种资源.我们要使用这些资源,就要为这些代表 ...
- apache出现You don't have permission to access / on this server提示的解决方法
在apache的配置文件httpd.conf里定义了对网站根默认的访问权限 #<Directory /> Options FollowSymLinks AllowOverrid ...
- Python:Matplotlib 画曲线和柱状图(Code)
原文链接:http://blog.csdn.net/ikerpeng/article/details/20523679 参考资料:http://matplotlib.org/gallery.html ...
- CorelDRAW X7中相机滤镜呈现出的复古照片效果
CorelDRAW X7软件中相机效果滤镜较之以前版本又增添了许多功能,模拟各种“相机”镜头产生的效果,包括彩色.相片过滤器.棕褐色色调和时间器效果,可以让照片回到历史,展示过去流行的摄影风格.以下步 ...
- 上传图片到PHP服务器
test_picture = function() { api.getPicture({ sourceType: 'library', encodingType: 'png', mediaValue: ...