21xrx.com
2025-07-13 12:08:03 Sunday
登录
文章检索 我的文章 写文章
C++ 栈的库函数:一文掌握常用方法
2023-07-08 14:13:42 深夜i     41     0
C++ 库函数 常用方法

C++ 是一种高效、稳定的编程语言,而栈(Stack)则是其中的一种重要数据结构。当我们需要编写栈相关的代码时,C++ 的标准库其实提供了许多现成的函数供我们使用。在本文中,我们将带你一文掌握 C++ 栈的常用库函数。

1. std::stack

在 C++ 中,我们可以使用 std::stack 来表示一个栈对象。这个库函数定义在头文件 中,可以直接使用。

下面先看一下 std::stack 的定义:

template <class T, class Container = std::deque<T>> class stack;

其中,T 代表栈中存放的元素类型,Container 表示栈中底层存储的容器类型,默认使用 std::deque。

下面是一些常用的 std::stack 的方法:

- push(val):将元素 val 压入栈中。

- pop():将栈顶元素弹出栈中。

- top():返回栈顶元素的引用。

- empty():若栈为空则返回 true,否则返回 false。

- size():返回栈中元素的个数。

下面是一个例子:

#include <iostream>
#include <stack>
using namespace std;
int main() {
  stack<int> s;
  s.push(1);
  s.push(2);
  s.push(3);
  while (!s.empty()) {
    cout << s.top() << " ";
    s.pop();
  }
  return 0;
}

2. std::deque

除了 std::stack,C++ 标准库中还提供了 std::deque(双队列)这个容器,可以用来实现栈的功能。和 std::stack 不同,std::deque 可以在两端进行插入和删除操作,更加灵活。

下面是一些常用的 std::deque 的方法:

- push_back(val):将元素 val 插入到末尾。

- pop_back():删除末尾元素。

- push_front(val):将元素 val 插入到开头。

- pop_front():删除开头元素。

- back():返回末尾元素的引用。

- front():返回开头元素的引用。

- empty():若 deque 为空则返回 true,否则返回 false。

- size():返回 deque 中元素的个数。

和 std::stack 一样,std::deque 也支持模板类型。下面是一个例子:

#include <iostream>
#include <deque>
using namespace std;
int main() {
  deque<int> dq;
  dq.push_back(1);
  dq.push_back(2);
  dq.push_front(0);
  while (!dq.empty()) {
    cout << dq.front() << " ";
    dq.pop_front();
  }
  return 0;
}

3. std::vector

我们甚至可以使用 std::vector(向量)来实现栈的功能。不过和 std::deque 不同,std::vector 只支持在尾部插入和删除元素。

下面是一些常用的 std::vector 的方法:

- push_back(val):将元素 val 插入到末尾。

- pop_back():删除末尾元素。

- back():返回末尾元素的引用。

- empty():若 vector 为空则返回 true,否则返回 false。

- size():返回 vector 中元素的个数。

下面是一个例子:

#include <iostream>
#include <vector>
using namespace std;
int main() {
  vector<int> v;
  v.push_back(1);
  v.push_back(2);
  v.push_back(3);
  while (!v.empty()) {
    cout << v.back() << " ";
    v.pop_back();
  }
  return 0;
}

通过 std::stack、std::deque 和 std::vector,我们可以方便地实现栈这种数据结构。同时,这些库函数还提供了其他的操作方法和容器类型,可以根据自己的需求选择合适的库函数来使用。

  
  

评论区