网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
文章目录
🔥前言
好久没有更新C++容器这块的内容了,那么今天一次性整合两种容器的概念模型与常用接口的使用:
stack
与queue
。
1、stack 容器概念模型
1.1、stack 容器模型图
1.2、stack 基本概念与特点
概念:
stack ,栈(堆栈),是一种先进后出(First In Last Out,FILO
)的数据结构,其中一端封闭。
生活中栈的例子有很多,就比如一群人排队进入一个死胡同,先进去的人要想出去就要等后面的人都出去,而最后进来的人可以最先出去。
特点:
- 只有位于栈顶的元素才可以被外界访问
- 栈用进入数据称为入栈:
push
- 栈中弹出数据成为出栈:
pop
- stack 不支持遍历操作
- 遍历需要在不改变原存储空间的条件下进行
- 通过每次出栈来访问所有元素的方式不能叫遍历
- 能够判断容器是否为空和得到元素个数
- 通过入栈来计数,并不是对出栈计数
2、stack 容器常用接口
接口是栈容器封装的一些方法,可以被外调用,实现不同功能
构造函数:
stack<T>stk;
- 默认构造,
T
采用了模板类的写法,存放数据类型
- 默认构造,
stack(const stack &stk);
- 拷贝构造函数
赋值操作:
stack& operator=(const stack &stk);
- 重载赋值运算符,可直接进行赋值
数据存取:
push(elem);
- 入栈操作,向栈顶添加元素
pop();
- 出栈操作,从栈顶移除元素
top();
- 返回栈顶元素
数量操作:
empty();
- 判断堆栈是否为空
size();
- 返回栈的大小
2.1、stack 代码综合使用
包含代码具体使用与运行效果
#include<iostream>
#include<stack>
using namespace std;
int main()
{
//默认构造创建栈
stack<int>stk;
//添加元素
stk.push(99);
stk.push(66);
stk.push(123);
//查看此时容器大小
cout <<"栈的大小为:"<< stk.size() << endl;
//结合接口来查看栈内元素
while (!stk.empty())
{
//访问栈顶元素
cout << stk.top() << endl;
//出栈,用于更新栈顶元素
stk.pop();
}
//查看此时容器大小
cout << "出栈后容器的大小为:" << stk.size() << endl;
return 0;
}
3、queue 容器概念模型
3.1、queue 容器模型图
3.2、queue 基本概念与特点
概念:
queue,队列,是一种先进先出(First In First Out,FIFO
)的数据结构,它有两个出口。
生活中最典型的例子莫过于隧道了,只允许队尾进入隧道,队首驶出隧道,先进先出且不可逆。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!