首页 > 代码库 > c++标准库之容器

c++标准库之容器

array

对内置数组进行包装,捆绑常用操作之后就形成了array。array的优点是在时空间效率上与内置数组几乎一致,但比内置数组使用起来顺手。size函数代替 sizeof(arr)/sizeof(arr[0]),back函数代替了 arr[sizeof(arr)/sizeof(arr[0]-1],array还可以进行swap及比较。array的缺点是大小固定。

vector

容器大小可动态增长,不能动态缩减的容器。vector支持下标访问,访问速度仅次于内置数组与array。vector在尾部的增加、删除操作很高效,其它位置则很低效。在本质上,vector是一块连续的内存,当内存大小不够时,vector会申请一块更大的内存替换掉旧的内存。vector的优缺点与其本质有关。

deque

容器大小可动态增长及缩减。deque支持下标访问,但访问速度最慢。deque在头部、尾部的增加、删除操作很高效,其它位置较低。deque的优点与缺点则是源于其本质上是多块连续的内存,而不是一块。

list

list本质上是双向链表,所以不支持下标访问。list在任何位置插入、删除都是常量时间,除头尾外,比vector、deque要高效。

forward_list

forward_list本质上是单向链表,设计初衷是为了省空间(连size函数都省了)。forward_list不支持下标访问,操作方式也与其它的容器不同,vector、list的insert、erase操作都是删除iterator所指的元素,而forward_list则是删除iterator所指元素之后的元素。

set

关联容器,set对应的概念为集合,其优点在于可快速查找。

map

关联容器,map对应的概念为字典表,其优点也在于可快速查找。

c++标准库之容器