赞
踩
关注我们
首先,
在C++中,队列(queue)是一种先进先出(FIFO)的数据结构,可以用来存储和访问数据。C++标准库中提供了队列的实现,可以通过包含头文件<queue>来使用。
queue是一种容器转换器模板,调用#include< queue>即可使用队列类。
queue<Type, Container> (<数据类型,容器类型>)
初始化时必须要有数据类型,容器可省略,省略时则默认为deque 类型
- queue<int>q1;
-
- queue<double>q2;
-
- queue<char>q3;
-
- //默认为用deque容器实现的queue;
-
-
- queue<char, list<char>>q1;
-
- //用list容器实现的queu
-
- queue<int, deque<int>>q2;
-
- //用deque容器实现的queue

注意:不能用vector容器初始化queue
因为queue转换器要求容器支持front()、back()、push_back()及 pop_front(),说明queue的数据从容器后端入栈而从前端出栈。所以可以使用deque(double-ended queue,双端队列)和list对queue初始化,而vector因其缺少pop_front(),不能用于queue。
1、常用函数
数push() 在队尾插入一个元素
表1如下:
成员函数 | 功能 |
---|---|
empty() | 如果 queue 中没有元素的话,返回 true。 |
size() | 返回 queue 中元素的个数。 |
front() | 返回 queue 中第一个元素的引用。如果 queue 是常量,就返回一个常引用;如果 queue 为空,返回值是未定义的。 |
back() | 返回 queue 中最后一个元素的引用。如果 queue 是常量,就返回一个常引用;如果 queue 为空,返回值是未定义的。 |
push(const T& obj) | 在 queue 的尾部添加一个元素的副本。这是通过调用底层容器的成员函数 push_back() 来完成的。 |
emplace() | 在 queue 的尾部直接添加一个元素。 |
push(T&& obj) | 以移动的方式在 queue 的尾部添加元素。这是通过调用底层容器的具有右值引用参数的成员函数 push_back() 来完成的。 |
pop() | 删除 queue 中的第一个元素。 |
swap(queue<T> &other_queue) | 将两个 queue 容器适配器中的元素进行互换,需要注意的是,进行互换的 2 个 queue 容器适配器中存储的元素类型以及底层采用的基础容器类型,都必须相同。 |
表2如下:
方法 | 功能 |
---|---|
q.empty() | 判断队列是否为空 |
q.size() | 返回队列中元素个数 |
q.front() | 返回队列中的第一个元素的引用 |
q.back() | 返回队列最后一个元素的引用 |
q.push(x) | 在队列尾部添加一个元素 |
q.pop() | 删除队列中的第一个元素(至少保证有一个元素) |
1)push()在队尾插入一个元素
- queue <string> q;
-
- q.push("first");
-
- q.push("second");
-
- cout<<q.front()<<endl;
输出 first
2)pop() 将队列中最靠前位置的元素删除,没有返回值
- queue <string> q;
-
- q.push("first");
-
- q.push("second");
-
- q.pop();
-
- cout<<q.front()<<endl;
输出 second 因为 first 已经被pop()函数删掉了
3)size() 返回队列中元素个数
- queue <string> q;
-
- q.push("first");
-
- q.push("second");
-
- cout<<q.size()<<endl;
输出2,因为队列中有两个元素
4)empty() 如果队列空则返回true
- queue <string> q;
-
- cout<<q.empty()<<endl;
-
- q.push("first");
-
- q.push("second");
-
- cout<<q.empty()<<endl;
分别输出1和0
最开始队列为空,返回值为1(ture);
插入两个元素后,队列不为空,返回值为0(false);
- #include <iostream>
- #include <queue>
-
- int main() {
- std::queue<int> myQueue;
-
- // 添加元素到队列尾部
- myQueue.push(10);
- myQueue.push(20);
- myQueue.push(30);
-
- // 访问队列头部元素
- std::cout << "Front element: " << myQueue.front() << std::endl;
-
- // 访问队列尾部元素
- std::cout << "Back element: " << myQueue.back() << std::endl;
-
- // 移除队列头部元素
- myQueue.pop();
-
- // 遍历并打印队列中的元素
- while (!myQueue.empty()) {
- std::cout << myQueue.front() << " ";
- myQueue.pop();
- }
- std::cout << std::endl;
-
- return 0;
- }

输出结果:
- Front element: 10
- Back element: 30
- 20 30
在上述代码中,首先创建了一个名为myQueue的队列,并使用push()函数将元素10、20和30添加到队列的尾部。然后,使用front()函数访问队列的头部元素,使用back()函数访问队列的尾部元素。接着,使用pop()函数移除了队列的头部元素。最后,使用empty()函数判断队列是否为空,并使用front()函数访问队列的头部元素并将其打印出来,然后再使用pop()函数移除队列的头部元素,直到队列为空。
队列的使用非常简单,在实际编程中经常用于解决需要按照先进先出顺序处理数据的问题。
*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。