C++之STL-队列Queue与优先队列Priority_Queue
队列适用于FIFO技术,其中FIFO表示先进先出。首先插入的元素将首先被提取,依此类推。有一个称为“前”的元素,它是位于最前位置或位于第一个位置的元素,也有一个名为“后”的元素,它是位于最后位置的元素。在普通队列中,元素的插入在尾部,而删除则从前面开始。
C ++中的优先队列是STL中的派生容器,它仅考虑最高优先级元素。队列遵循FIFO策略,而优先队列根据优先级弹出元素,即,优先级最高的元素首先弹出。
它在某些方面类似于普通队列,但在以下方面有所不同:
在优先队列中,队列中的每个元素都与某个优先级相关联,但是优先级在队列数据结构中不存在。
优先队列中具有最高优先级的元素将被首先删除,而队列遵循FIFO(先进先出)策略,这意味着先插入的元素将被首先删除。
如果存在多个具有相同优先级的元素,则将考虑该元素在队列中的顺序。
#include <iostream>
#include <queue>
using namespace std;
void priority_queue_method(priority_queue<int> queue_p) {
priority_queue<int> p_queue = queue_p;
while (!p_queue.empty()) {
cout << "\t" << p_queue.top();
p_queue.pop();
}
}
void queue_ordinary(queue<int> queue_int) {
queue<int> queue_obj = queue_int;
while (!queue_obj.empty()) {
cout << "\t" << queue_obj.front();
queue_obj.pop();
}
}
int main() {
priority_queue<int> p_queue;
p_queue.push(10);
p_queue.push(20);
p_queue.push(30);
p_queue.push(5);
cout << "priority_queue:";
priority_queue_method(p_queue);
cout << endl;
cout << "queue:";
queue<int> queue_container;
queue_container.push(10);
queue_container.push(20);
queue_container.push(30);
queue_container.push(5);
queue_ordinary(queue_container);
return 0;
}
输出:
priority_queue: 30 20 10 5
queue: 10 20 30 5