文章目录
1. 基础
队列遵循先进先出的原则
#include<queue>
2. 申明
#include <iostream>
#include <queue>
using namespace std;
int main(){
std::queue<int> numbers;
}
3. 添加元素 push()
在队列队尾添加一个元素
numbers.push(1);
numbers.push(2);
numbers.push(3);
numbers.push(4);
4. 获取第一个元素 front()
front():返回 queue 中第一个元素的引用
std::cout <<" queue number: " << numbers.front() << std::endl;
queue number: 1
5. 获取最后一个元素 back()
back():返回 queue 中最后一个元素的引用
std::cout <<" queue number back : " << numbers.back() << std::endl;
queue number back : 4
6. 队列的大小 size()
size():返回 queue 中元素的个数
std::cout << " queue size: " << numbers.size() << std::endl;
queue number back : 4
7. 删除第一个元素 pop()
pop(): 删除 queue 中的第一个元素
//删除第一个元素
numbers.pop();
std::cout <<" queue size after erase : " << numbers.size() << std::endl;
queue size after erase : 3
8. 返回是否为空 empty()
empty():如果 queue 中没有元素的话,返回 true
//返回队列是否为空
std::cout << " numbers if empty :" << numbers.empty() << std::endl;
std::queue<int> nus;
std::cout << " nus if empty : " << nus.empty() << std::endl;
numbers if empty :0
nus if empty : 1
9. 交换两个队列 swap()
// 交换两个队列
// swap()函数用于交换两个队列的内容,但是队列的类型必须相同,尽管大小可能有所不同
std::cout << " numbers size: " << numbers.size() << " nus size: " << nus.size() << std::endl;
numbers.swap(nus);
std::cout << " after swap --> numbers size: " << numbers.size() << " nus size: " << nus.size() << std::endl;
numbers size: 3 nus size: 0
after swap --> numbers size: 0 nus size: 3
10. 遍历队列
queue 也没有迭代器。访问元素的唯一方式是遍历容器内容,并移除访问过的每一个元素。
// 遍历队列
// queue 也没有迭代器。访问元素的唯一方式是遍历容器内容,并移除访问过的每一个元素。
while (!nus.empty()){
std::cout << nus.front() << std::endl;
nus.pop();
}
2
3
4
11. emplace() 与push()
push() 在队尾添加一个元素
emplace()
emplace 可以直接传入构造对象需要的元素, 然后自己调用其构造函数
typedef struct Node{
int x;
int y;
Node(int _x, int _y) : x(_x), y(_y) {}
};
int main(){
//emplace 可以直接传入构造对象需要的元素, 然后自己调用其构造函数
std::queue<Node> Nodes;
Node this_node(1, 1);
Node this_node2(2, 2);
Nodes.push(this_node);
Nodes.push(this_node2);
Nodes.emplace(3, 3);
std::cout <<"Nodes size: " << Nodes.size() << std::endl;
}