【C++】STL 容器 - stack 堆栈容器 ② ( stack 堆栈容器常用 api 简介 | stack#push 函数 | emplace 函数 | top 函数 | pop 函数 )

2023-12-24 08:18:42 浏览数 (2)

文章目录
  • 一、 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
请按任意键继续. . .

0 人点赞