C++ STL序列容器简介(C++ primer,P697)

STL序列容器简介

包含以下内容:

  • 容器的概念
  • 序列容器的基本要求与可选要求
  • 几种序列容器特点与基本操作

容器的概念

STL具有容器概念和容器类型;
容器概念是指具有名称(序列/关联容器)的通用类别;
容器类型是指可用于创建具体容器对象的模板;

所以,序列容器是一类容器类型的统称;

容器是存储其它对象的对象,不能将任何数据类型存储到容器中。

序列容器的基本要求与可选要求

序列容器有七种:vector、deque、queue、priority_queue、list、forward_list、stack;
注意,array不是STL容器;

序列容器通用要求:

  • 初始化

  • 插入

  • 擦除

     //初始化重要的两个方式
     X a(n, t);
     X b(a.begin(), a.end());
    
     //插入重要的两个方式
     a.insert(a.begin(), t);
     a.insert(a.begin(), b.begin(), b.end());
     
     //擦除区间
     a.erase(a.begin(), a.end());
    

序列可选要求:

  • front()、back()
    • 返回开头、结尾的元素,注意是元素
  • push_back、pop_back、push_front、pop_front
    • 在开头/结尾进行插入/删除操作
    • vector不推荐在头插入删除
    • list、deque都可以(list指双链表)
  • a[n]、 a . at(n)
    • 返回第n个元素
    • at具有边界检查,如果越界会有out_of_range异常

几种序列容器的特点与基本操作

vector —— 最简单的序列容器

除非需要在头部插入、删除元素,其余推荐使用vector

vector强调快速随机访问

  • < vector >头文件
  • 尾部插入/删除为固定时间操作
  • 头部/中间插入/删除为线性时间操作
  • 支持反转(rbegin、rend)
  • 支持随机访问

deque —— 双端队列

频繁在头插入删除元素,可以使用deque

  • < deque >头文件
  • 支持随机访问(比vector稍慢)
  • 头尾插入/删除都是固定时间操作
  • 中间插入/删除为线性时间(比vector稍慢)
  • 支持反转

list —— 双链表

任意一处插入/删除都是固定时间;

list强调快速随机插入/删除;

  • < list >头文件
  • 不支持随机访问、数组表示法
  • 有merge(合并)、sort(排序)、unique(删除重复元素)方法(primer,P699)

forward_list —— 单链表

  • < forward_list >头文件
  • 只能正向迭代
  • 不可反转

queue —— 队列

底层默认为deque;

先入先出,所以只能在头删除元素、尾添加元素

  • < queue >头文件
  • 不允许随机访问
  • 不允许遍历
  • empty()、size()、front()、back()、push()、pop()方法
  • pop()直接删除头,所以需要先用front查看头

priority_queue —— 优先队列

底层默认为vector;

最大的元素将被移到队首;

  • < queue >头文件

stack —— 栈,先入后出

底层默认为vector;

  • < stack >头文件
  • empty()、size()、top()、push()、pop()方法
  • pop()直接删除尾,所以需要用top()查看尾

array —— 非STL容器

固定大小,无法调整

  • < array >头文件
  • 无push、insert等方法
  • 有at()等方法
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值