21xrx.com
2024-12-22 20:49:57 Sunday
登录
文章检索 我的文章 写文章
C++ 栈的库函数:一文掌握常用方法
2023-07-08 14:13:42 深夜i     --     --
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,我们可以方便地实现栈这种数据结构。同时,这些库函数还提供了其他的操作方法和容器类型,可以根据自己的需求选择合适的库函数来使用。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复