STL的容器分类及使用场景

原文链接:https://blog.csdn.net/qq_33511280/article/details/62223432

原文链接:https://www.cnblogs.com/panlangen/p/8075766.html

第一种:顺序容器

1、vector:可变数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢;vector的另一个常见的问题就是clear操作。clear函数只是把vector的size清为零,但vector中的元素在内存中并没有消除,所以在使用vector的过程中会发现内存消耗会越来越多,导致内存泄露,现在经常用的方法是swap函数来进行解决: 

vector<int> V;
V.push_back(1); 
V.push_back(2);
V.push_back(1); 
V.push_back(2);
vector<int>().swap(V); 
//或者 V.swap(vector<int>());

利用swap函数,和临时对象交换,使V对象的内存为临时对象的内存,而临时对象的内存为V对象的内存。交换以后,临时对象消失,释放内存。

 

2、deque:双端队列。支持快速随机访问。在头尾位置插入/删除速度很快;

3、list:双向链表。只支持双向顺序访问。在list任何位置进行插入/删除操作速度都很快;

A) 如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
B) 如果你需要大量的插入和删除,而不关心随即存取,则应使用list
C) 如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque

 

4、forward_list:单向链表。只支持单向顺序访问。在链表任何位置进行插入/删除操作速度都很快;

5、array:固定大小数组。支持快速随机访问。不能添加或删除元素;

6、string:与vector相似的容器,但专门用于保存字符。随机访问快。在尾部插入/删除速度快;

第二种:关联容器

按关键字有序保存元素:

1、map:关联数组。保存关键字-值对;

2、set:关键字即值,即只保存关键字的容器;

3、multimap:关键字可重复出现的map;

4、multiset:关键字可重复出现的set;

无序集合:

1、unordered_map:用哈希函数组织的map;

2、unordered_set:用哈希函数组织的set;

3、unordered_multimap:用哈希函数组织的map,关键字可以重复出现;

4、unordered_multiset:用哈希函数组织的set,关键字可以重复出现。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值