【STL容器讲解—栈&队列】

栈的实现–stack

stack是一种先进后出(Frist In Last Out)的容器,stack容器只能对栈顶元素进行操作。因此需注意的是stack容器是不支持遍历的。但是栈可以返回栈中元素个数 size(),在进行入栈和出栈时记录元素个数,同时栈中还存在判空操作 empty();

stack图示:

在这里插入图片描述

stack相关操作:

构造函数

stack容器中封装了两个构造函数,无参构造函数和有参的拷贝构造函数

//stack<T> stk;
//stak(const stack& stk);
stack<int> stk1;
for (int i = 0; i < 10; i++)
{
	stk1.push(i + 1);
}
	stack<int>stk2(stk1);

stack容器在使用是头文件需包含进来

#include<stack>

赋值操作

//stack& operator=(const stack& stk);//重载=赋值操作
stack<int> stk3 = stk1;

数据存取

push(elem);//压栈
pop();//弹栈
top();//返回栈顶元素
while (!stk1.empty())
{
	cout << stk1.top() << " ";
	stk1.pop();
}
//输出为:10 9 8 7 6 5 4 3 2 1
  • deque& operator=(deque& deqT);//重载operator=运算符
deque<int>deqT1;
T1.push_back(1);
deque<int>deqT2;
deqT2 = deqT1;

大小操作

empty();
size();
if (stk1.empty())
{
	cout << "stk1已经是空的了" << endl;
}
cout << stk3.size() << endl;//10

队列实现–queue

队列与栈正相反,队列是一种先进先出(frist in frist out)的容器,它只允许在一端进行插入操作,另一端进行删除操作,队列中只有队头和队尾元素能够被外界获取,并且队列容器不能进行遍历操作。

队列图示:

在这里插入图片描述

队列相关操作

构造函数

/*
构造函数
	queue<T>que;
	queue(const queue<T>& que);
*/
queue<int> que1;
que1.push(1);
que1.push(2);
que1.push(3);
que1.push(4);
queue<int>que2(que1);

赋值操作

/*
赋值操作
	queue& operator=(queue<T>& que);
*/
queue<int>que3;
que3 = que2;
while (!que3.empty())
{
	cout << que3.front() << " ";//1 2 3 4
	que3.pop();
}

数据存取

/*
数据存取
push(elem);//将elem进入队尾
pop();//弹出队首元素
front();//获取队头元素
back();//获取队尾元素
*/
while (!que2.empty())
{
	cout << "队头元素为:" << que2.front() << endl;
	cout << "队尾元素为:" << que2.back() << endl;
	que2.pop();
}

大小操作

/*
大小操作
	empty();//判空操作
	size();//返回queue容器中元素个数
*/
if(!que2.empty())
{
	******
}
cout << "队列元素为:" << que2.size() << endl;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值