• C++ STL容器之 stack


    STL 中的 stack 是一种容器适配器,而不是一种容器。

    它是容器适配器是指,只要支持一系列方法的容器(empty, size, back, push_back, pop_back),都能作为stack使用。

    stack 有可能实际上是一个 vector, deque 或 list. 如果没有特殊指明,将使用 deque作为stack的实际容器。

    构造函数

    构造函数中包含两个模板参数。stack<stack::alue_type T, stack::container_type Container>

    其中 T代表数值类型,可以是基本数据类型或用户自定义类型。

    Container代表容器类型,可以是 vector, deque 或 list

    1 std::stack<int> first; // empty stack
    2 std::stack<int> second(mydeque); // stack initialized to copy of deque
    3 std::stack<int, std::vector<int>> third; // empty stack using vector
    4 std::stack<int, std::vector<int>> fourth(myVector); // stack initialized to copy of vector using vector
    View Code

    成员函数

    empty()

     测试栈是否为空,为空返回true,否则返回false。

     bool empty() const;

    size()

     返回栈中元素的个数

     size_type size() const;

    top()

     返回栈顶元素(最后push进来的那个)的引用。

     referenc& top();

    push(val)

     压一个值到栈中,其值将被初始化为 val

     void push(const value_type& val);

    pop()

     将栈顶元素弹出,注意这个函数无返回值,如果需要获取栈顶元素,应先调用top(),再pop()

     void pop();

    emplace(Args..)

     emplace 功能上与 push相同。不过emplace更高效。

     emplace 的参数不是容器元素本身,而是构造容器元素所需要的参数。即如果容器元素是一个类的对象,那么Args就是这个类构造函数的参数。

     push 是先构造一个 temporary 的元素对象,再将这个对象拷贝到容器中。而emplace是直接在容器内用参数构造一个对象。省略了拷贝的时间消耗。

     emplace 本质上是调用了各容器的 emplace_back(args...)函数

    swap()

     swap将两个 stack的内容交换。这两个 stack的模板参数 T和 Container必须都相同。

     void swap(stack& x) 重载1:x.swap(y)

     void swap(stack& x, stack& y)  重载2: swap(x, y)

    关系运算符

     取决于实际容器的关系运算符

  • 相关阅读:
    一文让你明白Redis持久化
    spring-data-redis 2.0 的使用
    中间自适应布局的5种解法
    php实现只需要一个QQ号就可以获得用户信息
    基于LINUX下的进程管理问题
    【初码干货】记一次分布式B站爬虫任务系统的完整设计和实施
    初码-爬虫系列-文章目录
    初码-阿里云系列-文章目录
    初码-Azure系列-存储队列的使用与一个Azure小工具(蓝天助手)
    初码-Azure系列-记一次MySQL数据库向Azure的迁移
  • 原文地址:https://www.cnblogs.com/yutongzhu/p/5865307.html
Copyright © 2020-2023  润新知