zoukankan      html  css  js  c++  java
  • C++ STL学习笔记之:队列(queue)、双端队列(deque)与栈(stack)

    queue(队列)

    定义一个名为 que 的存储 int 类型元素的队列:

    queue<int> que;
    

    入队操作:

    que.push(a);    // 其中a是一个int类型的变量
    

    出队操作:

    que.pop();
    

    但是在队列为空时,进行出队操作会出错。所以需要先判断一下队列是否为空。

    判断队列是否为空:

    que.empty()
    

    它返回一个 bool 值,如果队列为空返回 true,否则返回 false。

    队首元素:

    que.front();
    

    队尾元素:

    que.back();
    

    队列中元素个数:

    que.size();
    

    清空队列:
    队列没有单独的函数用来清空它,所以我们可以使用如下方法来清空队列:

    while (!que.empty())
        que.pop();
    

    双端队列(deque)

    区别于一般的队列,只能从队尾入队,从队首出队;
    双端队列是可以同时从队首入队和出队,也可以同时从队尾入队和出队的队列。

    定义一个名为 que 的存放 int 类型的双端队列(deque):

    deque<int> que;
    

    队首元素:

    que.front()
    

    队尾元素:

    que.back()
    

    判断双端队列是否为空:

    que.empty()
    

    获得双端队列的元素个数:

    que.size()
    

    从队首入队:

    que.push_front(a);
    

    从队尾入队:

    que.push_back(a);
    

    从队首出队:

    que.pop_front();
    

    从队尾出队:

    que.pop_back();
    

    清空双端队列:

    因为双端队列没有 pop() 方法,所以我们可以用 pop_front 或者 pop_back 代替。

    while (!que.empty())
        que.pop_front();
    

    while (!que.empty())
        que.pop_back();
    

    当然,双端队列还有更方便的清空它自己的方法:

    que.clear();
    

    栈(stack)

    既然讲了队列、双端队列,我们再来学习(复习一下)栈(stack)的使用。

    定义一个名为 stk 的存放 int 类型的栈:

    stack<int> stk;
    

    获得栈顶元素:

    stk.top()
    

    入栈操作:

    stk.push(a);
    

    出栈操作:

    stk.pop();
    

    判断栈是否为空:

    stk.empty()
    

    栈中元素个数:

    stk.size()
    

    清空栈:

    while (!stk.empty()) stk.pop();
    
  • 相关阅读:
    vue子父组件传值
    springboot后端controller参数接收
    mybatis-plus 相关
    整理 node-sass 安装失败的原因及解决办法
    vue组件name的作用小结
    关于npm audit fix
    Vue项目
    你们都在用IntelliJ IDEA吗?或许你们需要看一下这篇博文
    Eslint配置
    spring boot 资料整合
  • 原文地址:https://www.cnblogs.com/quanjun/p/13337632.html
Copyright © 2011-2022 走看看