序列容器类型

本文深入解析STL中的序列容器如vector、list和deque的特点,强调它们在插入、删除和访问上的效率差异。同时介绍了关联容器set、multiset、map和multimap的操作及排序功能,帮助理解不同容器在实际编程中的适用场景。
摘要由CSDN通过智能技术生成
序列容器类型
  1. vector

  2. list

    双向链表。与 vector 区别在于,list 任何位置的插入和删除都是固定时间的(vector 在除了结尾处插入和删除都是线性时间,结尾处固定时间)。

    不支持数组表示法和随机访问。与矢量迭代器不同,从容器中插入和删除后,链表迭代器指向的元素不变。

    list 成员函数

    函数说明复杂度
    void merge(list<T,Alloc>&x)将链表 x 与调用链表合并,两个链表必须已经排序连接之后,x 为空。线性时间
    void remove(const T &val)删除 val 的所有实例线性时间
    void sort()使用<运算符对 list 进行排序NlogN
    void splice(iterator pos, list<T,Alloc>x)在 pos 位置之前插入链表 x固定时间
    void unique()将连续的相同元素压缩为单个元素线性时间
  3. deque

    双端队列。支持随机访问。与 vector 主要区别在于 从deque 对象的开始位置(两个)插入和删除元素的时间是固定的,而不像vector 线性时间。如果多数操作发生在序列的起始和结尾处,用 deque。因此,vector 强调通过随机访问实现快速访问,list 强调元素的快速插入和删除。

  4. queue 、stack

    不仅不允许随机访问,甚至不允许遍历队列。

  5. array

    并非 STL 容器。长度固定,因此没有定义调整 array 大小的操作

  6. forward_list

    实现了单链表。

关联容器类型
  1. set

    值与键的类型相同,可反转,可排序,键唯一。键就是值。

  2. multiset

    与 set 类似,只是可能有多个值的键相同。

  3. map
    与 set 类似,值与键的类型不同。

  4. multimap

    与 multiset类似,同一个键可能与多个值关联。

    equal_range(k)返回的是一个值对,其中第一个成员为 lower_bound(k),即第一个键不小于 k 的元素,第二个成员指向upper_bound(k),即第一个键大于 k 的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值