C++ STL 队列queue详细使用教程
序言
我们平常写广搜什么,上来就是一句
queue<XXX> qu;
说明队列时很重要的。
STL库中的queue把队列的各种操作封装成一个类,非常方便,信奥中使用它也是很有优势的。
目录
一、队列的定义
二、创建队列对象
三、队列的初始化
四、常用函数
一、队列的定义
←出队[ ] [ ] [ ] [ ]入队←
队列是一种先进先出(FIFO)的数据结构的数据结构,它只能在一端入队,在一端出队,正是这一特点让它有许多用处,比如广度优先搜索等。
二、创建队列对象
queue<类型> qu;
尖括号里边填的是队列中元素的类型。
queue<int> qu;
如填写int那么队列中的元素都是int类型的。
struct Node {int x;int y;int step; };queue<Node> qu;
以此类推,如果填的是Node那元素都是Node类型的。
三、队列的初始化
以下是常见的几种初始化方法。
queue<int> qu; // 初始化一个空的队列
queue<int> qu({1, 2, 3, 4, 5}); // 创建一个队列,有元素{1, 2, 3, 4, 5}
queue<int> qu({1, 2, 3, 4, 5}); queue<int> newQu(qu); // 从其它队列复制
四、常用函数
qu.empty()
返回类型 bool 声明 inline bool std::queue<XXX>::empty() const qu.empty() == true表示队列为空 qu.empty() == false表示队列非空
qu.size()
返回类型 size_t 可以强制转换为int 声明 inline std::size_t std::queue<XXX>::size() const qu.size()表示队列元素的个数
qu.front()
返回类型 XXX 即队列元素的类型 声明 inline XXX &std::queue<XXX>::front() qu.front()返回的是队列的头部第一个元素
qu.back()
返回类型 XXX 即队列元素的类型 声明 inline XXX &std::queue<XXX>::back() qu.back()返回的是队列的尾部第一个元素
qu.push(a)
返回类型 void 声明 inline void std::queue<XXX>::push(const XXX &__x) qu.push(a) 将元素a压入队列尾部
qu.pop()
返回类型 void 声明 inline void std::queue<XXX>::pop() qu.pop() 将队列头部第一个元素移除
qu.emplace(...)
返回类型 XXX 声明 inline XXX &std::queue<XXX>::emplace<int, int>(int &&__args, int &&__args) 它同push也用于在队列尾部压入成员,以下演示它的优势。struct XXX {int a, b;XXX(int x, int y) {a = x;b = y;} };int main() {queue<XXX> qu;qu.emplace(1, 2); // 此处直接构造XXX类型的对象,无需自己构建。// 该函数将返回一个XXX类型的对象,即我们当场构造的那个对象cout << qu.front().a << " " << qu.front().b << endl;return 0; }
qu.swap(x)
返回类型 void 声明 inline void std::queue<XXX>::swap(std::queue<XXX> &__q) noexcept(true) qu.swap(qu2) 或 qu2.swap(qu) 都可以将qu与qu2中的元素进行交换