文章目录
- 一、 stack 堆栈容器常用 api 简介
- 1、栈顶插入元素 - stack#push 函数
- 2、栈顶构造元素 - stack#emplace 函数
- 3、获取栈顶元素 - stack#top 函数
- 4、获取栈顶元素 - stack#pop 函数
- 5、获取栈顶元素 - stack#empty 函数
- 二、 代码示例
- 1、代码示例
- 2、执行结果
一、 stack 堆栈容器常用 api 简介
1、栈顶插入元素 - stack#push 函数
调用 stack 容器的 push 成员函数 , 可以在 堆栈容器的 栈顶插入一个元素 ;
stack#push 函数原型如下 :
代码语言:javascript复制void push(const value_type& val);
stack#push 函数 接受一个 常量引用参数 val , 这是要插入的元素 ;
将 val 元素压入栈顶 , 可能会 触发底层容器 的相应操作 , 如 : 分配内存等 ;
特别注意 : stack 堆栈容器 只能在 栈顶进行插入和删除元素的操作 , 不支持在 堆栈的 栈底 或 中部的位置 进行插入和删除操作 ;
2、栈顶构造元素 - stack#emplace 函数
调用 stack 容器的 emplace 成员函数 , 可以直接在 栈顶 构造元素 ;
使用 stack#emplace 函数 向 栈顶添加元素 的优点是 避免了 不必要的 拷贝 或 移动 操作 , 提高了函数的性能 和 执行效率 ;
stack#emplace 函数原型如下 :
代码语言:javascript复制void emplace(const value_type& val);
stack#emplace 函数 接受一个 常量引用参数 val , 可以根据该参数的值在栈顶直接构造一个元素 ;
特别注意 : stack 堆栈容器 只能在 栈顶进行插入和删除元素的操作 , 不支持在 堆栈的 栈底 或 中部的位置 进行插入和删除操作 ;
3、获取栈顶元素 - stack#top 函数
调用 stack 容器的 top 成员函数 可以 获取栈顶元素 , 但不删除该元素 , 该元素仍然在 栈顶 , 只是读取 栈顶元素的值 ;
stack#top 函数原型如下 :
代码语言:javascript复制const_reference top() const;
该函数返回的是一个 常量引用 , 该引用返回值表示栈顶元素的值 ;
由于 stack 的存取机制是 后进先出 , 最后插入的元素将位于栈顶 , 可以通过调用 top 函数 获取 栈顶元素引用 来查看栈顶元素的值 , 同时不会影响栈的元素结构 ;
4、获取栈顶元素 - stack#pop 函数
stack 容器的 pop 成员函数 用于删除栈顶的元素 , 该操作不会获取栈顶元素 , 只能删除 ;
stack#pop 函数原型如下 :
代码语言:javascript复制void pop();
该函数没有参数 , 也没有返回值 , 其作用是 删除栈顶的元素 , 并减小栈的大小 ;
5、获取栈顶元素 - stack#empty 函数
调用 stack 容器的 empty 成员函数 可以检查栈是否为空 ;
stack#empty 函数原型如下 :
代码语言:javascript复制bool empty() const;
- 函数参数 : 该函数没有参数 ;
- 函数返回值 : 该函数返回一个布尔值 , 表示栈是否为空 ;
- 如果栈为空 , 则返回 true ;
- 如果栈不为空 , 否则返回 false ;
二、 代码示例
1、代码示例
代码示例 :
代码语言:javascript复制#include "iostream"
using namespace std;
#include "stack"
int main() {
// 创建 stack 堆栈容器对象
std::stack<int> s;
// 入栈操作 , 插入元素
s.push(1);
// 直接在栈顶构造元素
s.emplace(2);
s.push(3);
// 出栈操作
while (!s.empty()) {
// 打印栈顶元素
std::cout << "栈顶元素 : " << s.top() << std::endl;
// 出栈
s.pop();
}
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
2、执行结果
执行结果 :
代码语言:javascript复制栈顶元素 : 3
栈顶元素 : 2
栈顶元素 : 1
请按任意键继续. . .