STL序列容器

一、简介

STL(Standard Template Library)中的序列容器是一种线性容器,它们按照元素的插入顺序来存储数据。序列容器的典型操作包括在容器的前端或后端添加或删除元素,以及在容器中的任意位置插入或删除元素。STL序列容器的特点是它们提供了对元素的快速随机访问能力,这意味着可以通过索引来直接访问容器中的元素。

二、类型

1.vector

(1)简介:

array<T,N>(固定数组):表示可以存储 N 个 T 类型的元素,是 C++ 本身提供的一种容器。此类容器一旦建立,其长度就是固定不变的,这意味着不能增加或删除元素,只能改变某个元素的值

(2)特点:

可变大小数组,支持快速随机访问,但在非尾部位置插入或删除元素的成本较高。

2.deque

(1)简介:

deque<T>(双端队列):和 vector 非常相似,区别在于使用该容器不仅尾部插入和删除元素高效,在头部插入或删除元素也同样高效,时间复杂度都是 O(1) 常数阶,但是在容器中某一位置处插入或删除元素,时间复杂度为 O(n) 线性阶

(2)特点:

双端队列,支持快速随机访问,并且在两端插入或删除元素的操作效率很高。

3.list

(1)简介:

list<T>(双向链表):是一个长度可变的、由 T 类型元素组成的序列,它以双向链表的形式组织元素,在这个序列的任何地方都可以高效地增加或删除元素(时间复杂度都为常数阶 O(1)),但访问容器中任意第几个元素的速度要比前三种容器慢,这是因为 list<T> 必须从第一个元素或最后一个元素开始访问,需要沿着链表移动,直到到达想要的元素。

(2)特点:

双向链表,支持在任何位置进行高效的插入和删除操作,但不支持随机访问。

4.forward_list

(1)简介:

forward_list<T>(单向链表):和 list 容器非常类似,只不过它以单向链表的形式组织元素,它内部的元素只能从第一个元素开始访问,是一类比list快、更节省内存的容器。

(2)特点:

单向链表,只支持单向顺序访问,适合在单方向上进行迭代和操作。

5.array

(1)简介:

array<T,N>(固定数组):表示可以存储 N 个 T 类型的元素,是 C++ 本身提供的一种容器。此类容器一旦建立,其长度就是固定不变的,这意味着不能增加或删除元素,只能改变某个元素的值

(2)特点:

固定大小数组,支持快速随机访问,但不能动态增减元素数量。

三、共同操作

STL序列容器共享一系列通用操作,包括构造函数、析构函数、拷贝控制操作(如赋值和交换)、大小管理(如size, empty, resize)、元素访问(如operator[], at, front, back)、插入和删除操作(如insert, emplace, erase)以及迭代器相关操作(如begin, end, rbegin, rend)。

四、应用场景

  • 使用vector时,如果经常在容器的末端添加或删除元素,并且需要频繁随机访问元素,则vector是一个不错的选择。
  • 如果需要在容器的两端进行频繁的插入和删除操作,deque可能更加适合。
  • 当需要在容器的任意位置进行频繁的插入和删除操作,并且不需要随机访问时,listforward_list可能是更好的选择。
  • array适用于当容器大小在编译时已知且固定不变的情况。
  • string适用于处理文本数据,它提供了针对字符序列优化的操作。
  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值