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

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

前言

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

序列容器类型

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

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

序列容器方法

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

以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<T>数组容器是定长的,自然没有该方法,resize(),push_back(),pop_back(),insert(),erase(),clear()这些方法同理。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值