zoukankan      html  css  js  c++  java
  • C++stack栈

    C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构

    需要:#include <stack>  

    栈(stack)是限制插入和删除只能在一个位置上进行的线性表,该位置在表的末端,叫做栈顶。添加元素只能在尾节点后添加,删除元素只能删除尾节点,查看节点也只能查看尾节点。添加、删除、查看依次为入栈(push)、出栈(pop)、栈顶节点(top)。形象的说,栈是一个先进后出(LIFO)表,先进去的节点要等到后边进去的节点出来才能出来

    stack类可以用任何顺序容器vector、list、deque实现。默认情况下,stack用deque实现

    为了达到最佳性能,用deque或vector作为stack的基础容器

    #include<iostream>
    #include <stack>
    #include <queue>
    #include <list>
    
    int main()
    {
        
        std::stack<int> deque_stack;  //声明stack,默认以deque容器实现
            
        std::stack<int, std::vector<int>> vector_stack;  //声明stack,以vector容器实现
            
        std::stack<int, std::list<int>> list_stack;  //声明stack,以list容器实现
    
        std::stack<int> stack;
        std::stack<int> stack2 = stack; //声明一个int类型的stack2,将stack的元素复制给stack2
        std::stack<int> stack3(stack); //声明一个int类型的stack3,将stack的元素复制给stack3
    
        bool b= stack.empty(); //判断是否为空
        //若stack1为空,则返回true
        std::cout << b << std::endl;
        
        for (int i = 0; i < 5; ++i) {
            stack.push(i); //把数据放入栈顶
        }
        
        int n=stack.size(); //stack当前存放的元素的个数
        std::cout << n << std::endl;
    
        int x=stack.top(); //返回栈顶元素
        //条件是stack不为空
    
        std::cout << x << std::endl;
    
        stack.pop();  //删除stack栈顶元素
    
        stack.emplace(20);  //把数据放入栈顶
        /*
        push() 实际上是调用的底层容器的push_back()函数,新元素的值是push函数参数的一个拷贝。
        emplace() 实际上是调用的底层容器的emplace_back()函数,新元素的值是在容器内部就地构造的,不需要移动或者拷贝
        */
    
        stack.swap(stack2);  //将stack和stack2交换
    
        return 0;
    }

  • 相关阅读:
    中国剩余定理
    【BZOJ】【3053】The Closest M Points
    【BZOJ】【1878】【SDOI2009】HH的项链
    【BZOJ】【2648】SJY摆棋子&【BZOJ】【2716】【Violet 3】天使玩偶
    【UOJ Easy Round #2】
    【TYVJ 五月图论专项有奖比赛】
    【BZOJ】【3301】【USACO2011 Feb】Cow Line
    【BestCoder】【Round#41】
    【BZOJ】【1046】/【POJ】【3613】【USACO 2007 Nov】Cow Relays 奶牛接力跑
    【BZOJ】【3210】花神的浇花集会
  • 原文地址:https://www.cnblogs.com/liming19680104/p/13557681.html
Copyright © 2011-2022 走看看