c++ STL 之栈—— stack 详解

vector 是 stl 的一个关联容器,名叫“栈”,何为“栈”?其实就是一个数组,但有了数组何必还需栈,这是一个高深的问题。

 一、简介

        1. 定义

        栈,是一个柔性数组(可变长数组),可以变大变小但是和队列不一样,栈是先进后出(FILO),就说栈只能在一端入栈或者出栈。如下,在…一段可以出栈或者入栈。

栈 

        2. 实现

    栈的实现离不开 deque(双向队列),双向队列则使用了 allocator ,即分配器:

_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
    _Tp* allocate(size_t __n) {
        if (__n > allocator_traits<allocator>::max_size(*this))
            __throw_length_error("allocator<T>::allocate(size_t n)"
                                 " 'n' exceeds maximum supported size");
        if (__libcpp_is_constant_evaluated()) {
            return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
        } else {
            return static_cast<_Tp*>(_VSTD::__libcpp_allocate(__n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)));
        }
    }

 二、应用

        1.定义

    包含 stack 头文件:

#include <vector>

    和一般模板类一样,先写类型名,再填模板,最后写变量名:

stack <int> MyStack;

三、相关函数

        1. push

    入栈:

MyStack.push(0);

        2. swap

    交换两个 stack:

MyStack.swap(tmp);

         3. pop

    出栈:

MyStack.pop();

          4. size

    查看 stack 大小:

cout << MyStack.size();

          5. top

    返回栈顶元素:

cout << MyStack.top();

你学会了吗?

相关推荐

  1. STLstack

    2024-05-11 21:58:05       56 阅读
  2. 数据结构---(Stack)

    2024-05-11 21:58:05       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-11 21:58:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-11 21:58:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-11 21:58:05       82 阅读
  4. Python语言-面向对象

    2024-05-11 21:58:05       91 阅读

热门阅读

  1. 嵌入式复习提纲

    2024-05-11 21:58:05       30 阅读
  2. 学习笔记:IEEE 1003.13-2003【POSIX PSE53接口列表】

    2024-05-11 21:58:05       29 阅读
  3. Python图形界面(GUI)Tkinter笔记(目录)

    2024-05-11 21:58:05       32 阅读
  4. leetcode刷题:三数之和

    2024-05-11 21:58:05       33 阅读
  5. 思科基础命令(对标华为的HCIA知识)

    2024-05-11 21:58:05       35 阅读
  6. Goland GC

    Goland GC

    2024-05-11 21:58:05      35 阅读
  7. pg_basebackup备份恢复实战

    2024-05-11 21:58:05       26 阅读
  8. LeetCode 151.翻转字符串里的单词

    2024-05-11 21:58:05       32 阅读