linqy的个人博客分享 http://blog.sciencenet.cn/u/linqy

博文

C++中list, vector, map, set 区别与用法比较

已有 10485 次阅读 2017-10-22 18:13 |个人分类:C++|系统分类:科研笔记| list, map, Vector, set

List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。

Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。

List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,

只需要改变指针的指向就可以了。另外对于新添加的元素,Vector有一套算法,而List可以任意加入。
Map,Set属于标准关联容器,使用了非常高效的平衡检索二叉树:红黑树,他的插入删除效率比其他序列容器高是

因为不需要做内存拷贝和内存移动,而直接替换指向节点的指针即可。
Set和Vector的区别在于Set不包含重复的数据。

Set和Map的区别在于Set只含有Key,而Map有一个Key和Key所对应的Value两个元素。
Map和Hash_Map的区别是Hash_Map使用了Hash算法来加快查找过程,但是需要更多的内存来存放这些Hash桶元素,

因此可以算得上是采用空间来换取时间策略。

参考:http://www.cnblogs.com/smiler/p/4457622.html  


C++map 映照容器

http://www.cppblog.com/vontroy/archive/2010/05/16/115501.html

C++STL中list队列用法实例

http://www.cnblogs.com/madlas/articles/1364503.html  


C++STL中vector容器的用法





https://blog.sciencenet.cn/blog-3134052-1081994.html

上一篇:Java判断文件目录以及文件是否存在
下一篇:IDE简单介绍
收藏 IP: 111.195.162.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-29 02:07

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部