STL stack容器 queue容器

12 篇文章 0 订阅
9 篇文章 0 订阅

STL中的容器:

stack容器 queue容器 常用接口及用法:


stack (栈)容器:stack 容器是一种先进后出First In Last Out,FILO)的结构,(也可以被称为后进先出),它只有一个端口;


stack(栈)容器的特点

1.栈只有一个端口,意思即只可以从唯一仅有的端口添加数据和弹出数据;

2.栈中只有顶端的元素才可以被外界访问到,因此栈是不允许有遍历行为的;

3.栈中进入数据称为——入栈(push)

4.栈中弹出数据称为——出栈(pop)


在这里插入图片描述
图片转自于黑马程序员,是在学习的过程中截图下来的


生活中与相关的实例:子弹弹匣、只开了一个门的地铁或公交车;


各种函数接口具体如何使用,下面的代码块中会有详细的使用方法


stack 容器常用接口:

构造函数:

1.stack<T> stk; 默认(无参)构造函数;

2.stack(const stack & stk); 拷贝构造函数;


赋值操作:

1.stack& operator=(const stack & stk); 通过重载赋值运算符的方式给新创建的 stack 容器赋值;


数据存取:

1.push(elem);stack 容器的栈顶添加元素 elem

2.pop(); 移除 stack 容器中的栈顶元素;

3.top(); 返回 stack 容器中的栈顶元素;


大小操作:

1.empty(); 判断堆栈是否为空;

2.size(); 用于查看容器的大小(元素个数);


#include <iostream>
#include <stack>  //使用STL中的容器,得包含它的头文件 
#include <algorithm>  //使用STL提供的算法,得包含它的头文件

using namespace std;

void test_1()  //stack容器常用接口 
{
	//创建stack容器 
	stack<int> s1;  //默认(无参)构造函数
	
	//入栈
	s1.push(100);
	s1.push(200);
	s1.push(300);
	s1.push(400);
	
	stack<int> s2(s1);  //拷贝构造函数
	
	stack<int> s3;
	s3 = s1;  //通过重载赋值运算符的方式给新创建的stack容器赋值
	
    //查看容器的大小
    cout << "栈的大小为:" << s1.size() << endl;
	
	//判断stack容器s1是否为空,若不为空,返回栈顶元素,并执行出栈操作
	while(!s1.empty())
	{
		cout << "栈顶元素为:"  << s1.top() << endl;  //返回栈顶元素 
		
		s1.pop();  //出栈
	}
	
    //查看容器的大小
	cout << "栈的大小为:" << s1.size() << endl; 
}
 
int main()
{
	test_1();
	
	system("pause");
	return 0;
}

queue(队列)容器:queue 容器是一种先进先出First In First Out,FIFO)的结构,它有两个端口;


queue(队列)容器的特点

1.队列只允许从一端新增元素,从另一端移除元素;

2.队列中,只有队头和队尾可以被外界访问到,因此是不允许有遍历行为的;

3.队列中进数据称为——入队(push)

4.队列中出数据称为——出队(pop)

在这里插入图片描述

图片转自于黑马程序员,是在学习的过程中截图下来的


生活中与队列相关的实例:排队打饭、排队买票;


queue 容器的常用接口:

构造函数:

1.queue<T> que; 默认(无参)构造函数;

2.queue(const queue & que); 拷贝构造函数;


赋值操作:

1.queue& operator=(const queue & que); 通过重载赋值运算符的方式给新创建的 queue 容器赋值;


数据存取:

1.push(elem);queue 容器的队尾添加元素 elem

2.pop(); 移除 queue 容器中的队头元素;

3.front(); 返回 queue 容器中的队头元素;

4.back(); 返回 queue 容器的队尾元素;


大小操作:

1.empty(); 判断堆栈是否为空;

2.size(); 用于查看容器的大小(元素个数);


#include <iostream>
#include <string>  使用STL中的容器,得包含它的头文件
#include <queue>  //使用STL中的容器,得包含它的头文件 
#include <algorithm>  //使用STL提供的算法,得包含它的头文件

using namespace std;

//人类 
class Person
{
public:
	Person(string name,int age)
	{
		this->m_Name = name;
		this->m_Age = age;
	}
	
	string m_Name;  //姓名 
	int m_Age;  //年龄 
}; 

void test_1()  //queue容器常用接口 
{
	//创建queue容器
	queue<Person> q1;
	
	//创建要传入queue容器的对象
	Person p1("唐僧",30);
	Person p2("孙悟空",1000);
	Person p3("猪八戒",900);
	Person p4("沙僧",800);
	
	//入队
	q1.push(p1);
	q1.push(p2);
	q1.push(p3);
	q1.push(p4);
	
	queue<Person> q2(q1);  //拷贝构造函数
	
	queue<Person> q3;
	q3 = q1;  //通过重载赋值运算符的方式给新创建的queue容器赋值 
	
	//返回容器的大小
	cout << "队列的大小为:" << q1.size() << endl;
	
	//判断queue容器q1是否为空,若不为空,返回队头元素和队尾,并执行出队操作
	while(!q1.empty())
	{
		cout << "此时队头为:" << q1.front().m_Name << " 年龄:" << q1.front().m_Age << endl;  //返回队头元素 
		cout << "此时队尾为:" << q1.back().m_Name << " 年龄:" << q1.back().m_Age << endl;  //返回队尾元素 
		
		q1.pop();  //队头元素出队	 
	}
	
	//返回容器的大小
	cout << "队列的大小为:" << q1.size() << endl; 
}
 
int main()
{
	test_1();
	
	system("pause");
	return 0;
}

以上就是STL中stack容器和queue容器的一些常用接口和用法啦O(∩_∩)O。笔记中有错误的地方,欢迎指出,欢迎大家讨论!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值