C++(vector,list,stack和queue的操作)

vector

vector可以用来表示一个不定长度的数组,它是一种序列容器。它的大小是可以动态改变的。当新元素插入容器时,vector不会每次都重新分配大小。与其他动态序列容器相比,vector在访问元素时更加高效,在末尾添加和删除元素相对高效。

#include<vector>  //包含头文件
vector<int> vec;  //声明一个int型向量
vector<int> vec(5);//声明一个初始大小为5的int向量
vector<int> vec(10,1);//声明一个初始大小为10且值均为1的向量

vec.size();//返回向量大小(容量)
vec.max_size();//返回向量的最大容量
vec.capacity();//向量真实大小
vec.empty();//判断向量是否为空
vec.push_back();//向量末尾插入元素
vec.pop_back();//删除向量末尾元素

vec.insert(vec.begin()+i,a);//在第i+1个元素前面插入a,通过迭代器操作
vec.erase(vec.begin()+i);//删除第i+1个元素,通过迭代器操作
vec.clear();//清除向量中所有元素

list

list是一个双向链表,它有一个重要性质:插入操作和删除操作都不会造成原有的list迭代器失效,每次插入或删除一个元素就配置或释放一个元素空间。也就是说,对于任何位置的元素插入或删除,list永远是常数时间

#include<list>

list<int> list1;//定义一个int类型的列表
list<int> list1(3);//创建一个初始大小为3的int型列表
list<int> list1(3,2);//建立一个含3个元素的列表,值都是2
list<int> list2(list1);//建立一个列表list2,它是list1的拷贝

//插入函数类似于vector
list1.push_back();//在列表尾部插入元素
list1.push_front();//在开始位置增加一个元素
list1.pop_back();//删除末尾元素
list1.pop_front();//删除第一个元素
list1.front();//返回列表list1的第一个元素
list1.back();//返回列表list1的最后一个元素
list1.empty();//判断列表是否为空
list1.size();//返回列表list1中实际元素个数
list1.clear();//清除列表中所有元素
list1.remove(2);//删除列表中值为2的所有元素(可以是其他类型)

list1.insert(list1.begin()+i,a); //在第i+1个元素前面插入a,通过迭代器操作
list1.erase(list1.begin()+i);//删除第i+1个元素,通过迭代器操作

//用迭代器遍历元素
#include<algorithm>
swap(list1,list2);//将list1和list2交换
list1.merge(list2);//合并2个有序的列表,从新放到list1中,释放list2
list1.splice(list1.begin(),list2);//将list2连接到list1的begin()位置
list1.reverse();//反转列表
list1.sort();//升序排序

stack

栈是一个线性表,插入和删除只在表的一端进行。这一端称为栈顶(Stack Top),另一端则为栈底(Stack Bottom)。堆栈的元素插入称为入栈,元素的删除称为出栈。

#include<stack>
stack<int> s1;//定义一个类型为int型的栈
s.push(i);//入栈操作,在栈顶增加元素
s.pop();//出栈,移除栈顶元素
s.top();//取栈顶元素,返回栈顶元素的值
s.empty();//判断栈是否为空,若是则返回一
s.size();//返回栈中元素的个数

//清空栈中元素
while(!s.empty())
{s.pop();}

queue

队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构;在队尾添加元素,在队头删除元素。

   注意!!!那么我们如何判断队列是空队列还是已满呢?
  a、栈空: 队首标志=队尾标志时,表示栈空。
  b、栈满 : 队尾+1 = 队首时,表示栈满。
#include<queue>
queue<int> q1;//定义一个类型为int的队列
q1.push(x);//将x连接到队列的尾端
q1.pop();//弹出队列的第一个元素,但并不返回它
q1.front();//返回队首元素
q1.back();//返回队尾元素
q1.empty();//判断队列是否为空,若是返回1
q1.size();//返回队列长度
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值