• 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();
    
  • 相关阅读:
    WCF开发入门的实例
    转:SQLHelper类,泛型+反射
    设置ASP缓存的几个语句
    ADO.NET总结
    通过反射来实现:DataTable 和List 相互转换
    十步完成windows服务的安装
    dhl:The request for security token could not be satisfied because authentication failed. 调用方未由服务进行身份验证。
    C#中的readonly(运行时常量)与const(编译时常量)的区别
    用do{}创建内联子程序
    用autodie简化错误处理
  • 原文地址:https://www.cnblogs.com/quanjun/p/13337632.html
Copyright © 2020-2023  润新知