您当前的位置: 首页 >  容器

RuiH.AI

暂无认证

  • 0浏览

    0关注

    274博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++学习 二十、STL(3)序列容器

RuiH.AI 发布时间:2022-03-15 14:55:34 ,浏览量:0

C++学习 二十、STL(3)序列容器
  • 前言
  • 序列容器类型
  • 序列容器方法

前言

本篇继续学习C++中的STL,序列容器。

序列容器类型

序列容器,一般是通过类似数组的形式,按照次序存储某种类型的数据,包括:

  • array数组容器,类似于普通数组,存储N个T类型的数据,不能增加或者减少元素,只能修改元素的值。
  • vector向量容器,长度可变,当内存不足时会自动申请分配新内存。可以在尾部高效增加或者删除元素,也可以在任意位置低效插入和删除元素。
  • deque双端队列容器,可以在头部和尾部高效增删元素,也可以在任意位置低效插入和删除元素。
  • list双向链表容器,可以在容器任何位置高效插入和删除元素,但访问元素时需要从第一个或最后一个元素开始沿着迭代器访问,效率较低。
  • forward_list单向链表,与list类似,但其迭代器是前向访问的,也就是只能从第一个元素开始沿着迭代器访问。
  • queue队列容器,先进先出,只能在尾部添加元素,在头部删除元素,只能访问头部和尾部元素,没有迭代器。
  • stack栈容器,先进后出,只能向栈顶添加或者弹出元素,只能访问栈顶元素,同样没有迭代器。
序列容器方法

序列容器有许多共通的方法,也有一些独特的方法。

以vecctor为例:

begin(),rbegin(),cbegin(), crbegin(),end(),rend(),cend(),crend() # 返回迭代器,r表示反向,c表示常量

assign() # 把另一个容器中元素放到本容器中

operator=(),operator[] # 容器赋值,索引访问元素

size() # 元素个数

max_size() # 容器最大容量

capacity() # 当前容量

empty() # 判断是否是空容器

resize() # 改变容器长度

front(),back() # 返回第一个、最后一个元素的引用

at() # 使用边界检查的索引访问

push_back(), pop_back() # 从尾部添加/删除一个元素

insert(), erase() # 向某个位置插入或删除一段元素

clear() # 清空容器(但不回收空间)

swap() # 交换两个容器的所有元素

data() # 返回容器第一个元素的指针

begin(), end()这些方法,没有迭代器的容器自然就不具备。

assign()把其它容器的元素替换自身,但array数组容器是定长的,自然没有该方法,resize(),push_back(),pop_back(),insert(),erase(),clear()这些方法同理。

全部记住这些方法比较麻烦,一般IDE都会有提示。

关注
打赏
1658651101
查看更多评论
立即登录/注册

微信扫码登录

0.2505s