• 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();
    
  • 相关阅读:
    记录一些经常被忽略的结论
    Eclipse 各种问题解决记录
    Feign 动态URL 解决记录
    Nacos 启动失败
    多git账号配置解决方案
    记一次java.lang.StackOverflowError
    StringBuilder 以及 StringBuffer默认大小与扩容
    MySQL索引背后的数据结构及原理
    我没有高并发项目经验,但是面试的时候经常被问到高并发、性能调优方面的问题,有什么办法可以解决吗?
    istio 学习之 手动注入sidecar
  • 原文地址:https://www.cnblogs.com/quanjun/p/13337632.html
Copyright © 2020-2023  润新知