std::queue 类是一种容器适配器,它提供队列的功能——尤其是 FIFO(先进先出)数据结构。此类模板用处为底层容器的包装器——只提供特定的函数集合。queue 在底层容器尾端推入元素,从首端弹出元素。
元素访问 | |
访问第一个元素 (公开成员函数) | |
访问最后一个元素 (公开成员函数) | |
容量 | |
检查容器适配器是否为空 (公开成员函数) | |
返回元素数 (公开成员函数) | |
修改器 | |
向队列尾部插入元素 (公开成员函数) | |
(C++23) | 在末尾插入元素范围 (公开成员函数) |
(C++11) | 在尾部原位构造元素 (公开成员函数) |
移除首个元素 (公开成员函数) | |
(C++11) | 交换内容 (公开成员函数) |
operator==operator!=operator<operator<=operator>operator>=operator<=> (C++20) | 按照字典顺序比较两个 queue 的值 |
源代码:
#include <cassert>
#include <iostream>
#include <queue>
int main()
{
//1.容量函数empty, size
std::queue<int> que1;
std::cout << "que1.empty()==========" << que1.empty() << std::endl;
std::cout << "que1.size()===========" << que1.size() << std::endl;
//修改器:push, emplace, pop, swap
std::queue<int> que2;
que2.push(0); //向除队列尾部插入0
que2.push(1); //que2 = 0 1
que2.push(2); //que2 = 0 1 2
que2.emplace(3); //que2 = 0 1 2 3 在尾部原位构造元素
std::cout << "que2.empty()==========" << que2.empty() << std::endl;
std::cout << "que2.size()===========" << que2.size() << std::endl;
que2.pop(); //移除首个元素 , 0
std::cout << "que2.size()===========" << que2.size() << std::endl;
que1.swap(que2); //交接内容
std::cout << "que1.empty()==========" << que1.empty() << std::endl;
std::cout << "que1.size()===========" << que1.size() << std::endl;
std::cout << "que2.empty()==========" << que2.empty() << std::endl;
std::cout << "que2.size()===========" << que2.size() << std::endl;
//元素访问 front, back
int front = que1.front(); //访问第一个元素
std::cout << "que1.front()==========" << front << std::endl;
int back = que1.back(); //访问最后一个元素
std::cout << "que1.back()===========" << back << std::endl;
std::queue<int> que3;
bool b1 = (que1 == que3);
bool b2 = (que1 != que3);
bool b3 = (que1 < que3);
bool b4 = (que1 <= que3);
bool b5 = (que1 > que3);
bool b6 = (que1 >= que3);
std::cout << "(que1 == que3)========" << b1 << std::endl;
std::cout << "(que1 != que3)========" << b2 << std::endl;
std::cout << "(que1 < que3)=========" << b3 << std::endl;
std::cout << "(que1 <= que3)========" << b4 << std::endl;
std::cout << "(que1 > que3)=========" << b5 << std::endl;
std::cout << "(que1 >= que3)========" << b6 << std::endl;
std::cout << "que3.empty()==========" << que3.empty() << std::endl;
std::cout << "que3.size()===========" << que3.size() << std::endl;
que3 = que1; //赋值
std::cout << "que3.empty()==========" << que3.empty() << std::endl;
std::cout << "que3.size()===========" << que3.size() << std::endl;
assert(que1.size() == 3);
return 0;
}
运行结果:
参考