STL queue

queue单向队列与有点类似,栈是在栈顶存取数据,queue是在队尾存入数据,队头取出数据。单向队列中的数据是先进先出(First In First Out,FIFO)。在STL中,单向队列也是以别的容器作为底部结构,再将接口改变,使之符合单向队列的特性就可以了。

queue没有类似vector, list等的iterator迭代器, 所以不能够通过iterator进行遍历, 要遍历queue, 可以通过front, pop等操作进行组合。

一、模板

template <class T, class Container = deque<T> > class queue;

queue 模板类的定义在<queue>头文件中。

与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。

二、函数使用

构造函数:

创建一个空的queue: queue <int> q1;

                                       queue <double> q2;//默认deque容器

复制queue:

                  vector<int> a;

                 queue<int, vector<int> b(a);

数据基本操作:

入队,如例:q.push(x); 将x 接到队列的末端。
出队,如例:q.pop(); 弹出队列的第一个元素(队首),注意,并不会返回被弹出元素的值。
访问队首元素,如例:q.front(),即最早被压入队列的元素。
访问队尾元素,如例:q.back(),即最后被压入队列的元素。
判断队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()

<pre name="code" class="cpp" style="color: rgb(68, 68, 68); font-size: 16px; line-height: 28px;">#include <stdafx.h>  

 
#include <iostream>  
#include <list>  
#include <queue>  
#include <string>  
using namespace std;  
  
void show(list<int>& l)  
{  
    cout << "list: ";  
    for(list<int>::iterator it = l.begin(); it != l.end(); ++it)  
        cout << *it << ' ';  
    cout << endl;  
}  
  
void show(queue<int, list<int> > q)  
{  
    cout << "queue: ";  
    while(!q.empty()){  
        cout << q.front() << ' ';  
        q.pop();  
    }  
    cout << endl;  
}  
int main()  
{  
    list<int> int_lst;  
    int_lst.push_back(1);  
    int_lst.push_back(2);  
    int_lst.push_back(3);  
    int_lst.push_front(0);  
    //show list  
    show(int_lst);  
      
    queue<int, list<int> > int_que(int_lst);  
  
    //push  
    cout << "push 4 into queue" << endl;  
    int_que.push(4);  
    show(int_que);    
      
    //front and back element  
    cout << "front: " << int_que.front() << endl;  
    cout << "back: " << int_que.back() << endl;  
      
    //pop  
    cout << "pop element" << endl;  
    int_que.pop();  
    show(int_que);  
      
    //size  
    cout << "size of queue: " << int_que.size() << endl;  
      
    return 0;  
}  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STL(Standard Template Library)中的 queue 是一个常用的容器适配器,用于实现先进先出(FIFO)的数据结构。它基于 deque(双端队列)实现,并提供了一些操作函数来操作队列中的元素。 你可以使用 <queue> 头文件来包含 queue 容器适配器的定义。以下是一些 queue 的常用操作: 1. push(element):将元素添加到队列的末尾。 2. pop():移除队列的第一个元素。 3. front():返回队列的第一个元素,但并不移除它。 4. back():返回队列的最后一个元素,但并不移除它。 5. empty():检查队列是否为空,如果为空则返回 true,否则返回 false。 6. size():返回队列中元素的个数。 下面是一个简单的示例代码,演示了如何使用 queue 容器适配器: ```cpp #include <iostream> #include <queue> int main() { std::queue<int> myQueue; myQueue.push(1); myQueue.push(2); myQueue.push(3); std::cout << "Front element: " << myQueue.front() << std::endl; std::cout << "Back element: " << myQueue.back() << std::endl; myQueue.pop(); std::cout << "Front element after popping: " << myQueue.front() << std::endl; std::cout << "Queue size: " << myQueue.size() << std::endl; return 0; } ``` 这个示例代码创建了一个整数类型的队列,并使用 push() 函数将三个元素添加到队列中。然后,使用 front() 和 back() 函数分别获取队列的第一个元素和最后一个元素,并使用 pop() 函数移除第一个元素。最后,使用 size() 函数获取队列中剩余元素的个数。 希望这个简单的示例能帮助你理解 queue 的基本用法。如果你还有其他问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值