容器和迭代器特性一回忆版

容器:存储数据的模板(数据结构)。常用的容器有以下几个:

string:字符串容器。使用增删改查操作,比C语言更方便。

vector:线性结构,相当于动态数组。array在申请内存空间时都会申请的稍微大一些,太大了会浪费内存,太小了新数据进来又容易不够用。而vector正好解决了这个问题,当有新的数据进来,空间不够用时,系统会自动开辟一块新的空间将数据装到里面,再释放原有空间,vector容器的容量一定是大于等于数据个数的。
存储数据的方式是随机存储,所以迭代器访问也是随机访问。

deque:线性结构,双端队列,两头都可以进出,更大的自由度带来的可能是更大的消耗。
deque是由一块一块的空间拼接起来的。优点是不用重新开辟空间,复制数据,释放原有空间这一系列操作。
存储方式随机,迭代器访问方式也是随机访问。

stack:堆栈,先进后出。没有迭代器。

queue:队列,先进先出。没有迭代器。

list:链表。通过指针连接,在物理存储空间上可以是无序的,相较于vector,list增删改查只需要修改指针和单个数据即可,不用移动大量元素,也避免了占用内存。
链表是双向结构,所以迭代器是双向迭代器。

set/multiset:底层由红黑树实现,属于关联容器。不区分键值和实值,整个数据就是一个键值,数据进来会根据键值被自动排序。set和multiset的区别是multiset允许键值重复。双向迭代器。

map/multimap:底层由红黑树实现,同属于关联容器。将数据分为键值和实值,同样按键值自动排序。map和multimap的区别是multimap允许键值重复。双向迭代器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值