因为最近在学BFS搜索算法,在BFS中需要用到队列这样的数据结构,就去了解了一下STL中封装好的queue
1.队列简介:
2.队列的常用功能:
C++的STL标准模板库中,已经为我们实现了模板,我们可以直接使用,当然如果是初学的话建议自己去写写队列的操作。
首先必须加入#include<queue>
以及using namespace std
才能使用。
#include <queue>
using namespace std;
int main() {
return 0;
}
构造一个队列:
入队操作:
通过方法push()进行,是在队尾插入一个元素。
#include <queue>
using namespace std;
int main() {
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
return 0;
}
获取队首元素:
通过front()进行,获取的是队头元素。
#include <queue>
#include <iostream>
using namespace std;
int main() {
queue<int> q;
q.push(1);
cout << q.front() << endl;
q.push(2);
cout << q.front() << endl;
q.push(3);
cout << q.front() << endl;
return 0;
}
出队操作:
通过pop()方法让队首元素出队
#include <queue>
#include <iostream>
using namespace std;
int main() {
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
q.pop();
cout << q.front() << endl;
q.pop();
cout << q.front() << endl;
q.pop();
return 0;
}
判断队列是否为空:
#include <queue>
#include <iostream>
using namespace std;
int main() {
queue<int> q;
q.push(1);
q.push(2);
q.push(3);
while (!q.empty()) {
// 如果队列不空,一直出队,用这样的方法清空一个队列,因为队列没有 clear 方法。
cout << q.front() << endl;
q.pop();
}
return 0;
}
清空队列:
队列没有clear()方法需要手动清空:
// 如果队列不空,用这样的方法清空一个队列
while (!q.empty()) {
q.pop();
}
一些STL中的常用队列功能就介绍这么多了。
欢迎关注Blog:
www.lyxueit.com