C++之STL(序列型容器概览)(蓝桥杯备战)

序列型容器概览

1.vector

定义在头文件<vector>

实际上是一个动态数组 随机存取任何元素都能在常数时间完成。在尾端增删元素具有较佳的性能。

2.deque(双端队列)

定义于<deque>

也是个动态数组,随机存取任何元素都能在常数时间完成(但性能次于vector)。在两端增删元素具有较佳的性能。

3.list(双向链表)

任意位置插入和删除元素的效率都很高

不支持随机存取

每个元素还有指针占用额外空间

PS:在序列容器中,元素的插入位置同元素的值无关

基本操作

1.初始化

默认构造函数初始化

vector<int> vec;
list<string> list1;
deque<float> deq;

拷贝构造函数初始化

vector vec1; 
vector vec2(vec1); 

list list1; 
list list2(list1); 

deque deq1;
deque deq2(deq1); 

创建有长度为10的容器

vector<string> vec(10);
list<int> list1(10);
deque<string> deq(10);

创建有10个初值的容器

vector<string> vec(10,"hi");
list<int> list1(10, 1);
deque<string> deq(10, "hi");

2.访问元素

c.back()

返回容器c的最后一个元素的引用

c.front()

返回容器c的第一个元素的引用

c[n]

返回下标为n的元素的引用(0<=n<c.size()),只适用于vector和deque容器

c.at[n]

返回下标为n的元素的引用(0<=n<c.size()),只适用于vector和deque容器

3.添加元素

c.push_back(t)

在容器c的尾部添加值为t的元素。返回void类型

c.push_front(t)

在容器c的前端添加值为t的元素。返回void类型,只适用于list和deque

c.insert(p,t)

在迭代器p所指向的元素前面插入元素t。返回指向新添加元素的迭代器

c.insert(p,n,t)

在迭代器p所指向的元素前面插入n个值为t的新元素,返回void类型

c.insert(p,b,e)

在迭代器p所指向的元素前面插入迭代器b和e标记的范围内的元素。返回void类型

4.删除元素

c.pop_back()

删除容器c的最后一个元素

c.pop_front()

删除容器c的第一个元素,只适用于deque和list容器

c.erase(p)

删除迭代器p指向的容器中的元素

c.erase(b,e)

删除迭代器b和e所标记范围内的元素(前闭后开区间)

c.clear()

删除容器中所有的元素

选用规则

  • 如果程序要求随机访问元素,则应用vector或者 deque容器
  • 如果程序必须在容器中间位置插入或删除元素,则应采用list容器
  • 如果程序不是在容器的中间位置,而是在容器的首部或尾部插入或删除元素,则应采用deque容器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值