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__ 的目錄,裡面也會有 ...
随机推荐
- Linux - 虚拟机中的三种网络连接,桥接、NAT、Host-only详解
虚拟机中的三种网络连接 1.桥接 2.NAT 3.Host-only 桥接方便做实验,配置ip方便.可以和局域网中的其他机器进行通信,也可以和公网进行通信.缺点是会占用一个ip. NAT,可以和主机进 ...
- LightOJ--1152--Hiding Gold(二分图奇偶建图)(好题)
Hiding Gold Time Limit: 2000MS Memory Limit: 32768KB 64bit IO Format: %lld & %llu Submit Sta ...
- hdoj--1151--Air Raid(最大独立集)
Air Raid Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- 【Codeforces 258B】 Sort the Array
[题目链接] http://codeforces.com/contest/451/problem/B [算法] 模拟 在序列中找到一段单调递增的子序列,将这段序列反转,然后判断序列是否变得单调递增,即 ...
- Sublime Text 2 界面主题 推荐 Flatland
先搜索下THEME-FLATLAND 安装完后在preferences中选择settings-usr { "color_scheme": "Packages/Theme ...
- php obstart
PHP ob_start() 函数介绍 2010-03-29 php ob_start 与 ob_end_flush() 是 php 的缓冲输出函数. ob_start([string output_ ...
- 在量化金融中15个最流行的Python数据分析库
Python是当今应用最广泛的编程语言之一,以其效率和代码可读性著称.作为一个科学数据的编程语言,Python介于R和java之间,前者主要集中在数据分析和可视化,而后者主要应用于大型应用.这种灵活性 ...
- wpf 错误 执行了 QueryInterface 调用,请求提供 COM 可见的托管类“BoilerMonitoringV1._0.MapControl”的默认 IDispatch 接口。
在做wpf嵌入地图时,在自定义的WebBrowser 里面使用JavaScript调用外部方法的时报的错误 在原来的WinForm里 我们只要在窗体类设置的头部设置个 [System.Runtime. ...
- RedHat/CentOS 大文件拆分及合并与md5验证
[root@tdh55 mnt]# cd /opt/[root@tdh55 opt]# ll -h-rw-r--r--. 1 root root 7.5G May 12 11:19 TDH-Image ...
- EF Code First连接现有数据库
作为一个初入学习.net MVC4 的新手,想写一写今天碰到的问题,做一个总结. 首先我想利用EF Code First来连接我现有数据库,而不是通过EF Code First来自动生成数据库和表. ...