English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Map (Container) ++La cola de prioridad en STL es un contenedor derivado, que solo considera el elemento de prioridad más alta. La cola sigue la estrategia FIFO, mientras que la cola de prioridad elimina elementos según la prioridad, es decir, el elemento de prioridad más alta se elimina primero.
Es similar a una cola normal en algunos aspectos, pero difiere en lo siguiente:
En la cola de prioridad, cada elemento de la cola está asociado con una prioridad, pero la prioridad no existe en la estructura de datos de la cola.
El elemento con la prioridad más alta en la cola de prioridad se eliminará primero, y la cola sigueFIFO (primero en entrar, primero en salir)Estrategia, esto significaPrimero插入的元素将被首先删除。
如果存在多个具有相同优先级的元素,则将考虑该元素在队列中的顺序。
priority_queuevariable_name;
让我们通过一个简单的示例了解优先队列。
在上图中,我们通过使用push()函数插入了元素,并且插入操作与普通队列相同。但是,当我们使用pop()函数从队列中删除元素时,优先级最高的元素将首先被删除。
函数 | 描述 |
---|---|
push() | 它将新元素插入优先队列。 |
pop() | 它将优先级最高的元素从队列中删除。 |
top() | 此函数用于寻址优先队列的最顶层元素。 |
size() | 返回优先队列的大小。 |
empty() | 它验证队列是否为空。基于验证,它返回队列的状态。 |
swap() | 它将优先队列的元素与具有相同类型和大小的另一个队列交换。 |
emplace() | 它在优先队列的顶部插入一个新元素。 |
让我们创建一个简单的优先队列程序。
#include#include using namespace std; int main() while(!q.empty()) priority_queue p; // 变量声明. p.push(10); // 插入 10 到队列, top=10 p.push(30); // 插入 30 到队列, top=3Derechos de autor © p.push(20); // 插入 20 到队列, top=2Derechos de autor © cout<<"可用元素的数量 到 'p' :"< 在上面的代码中,我们创建了一个优先队列,在其中插入三个元素,即10、30、20。在插入这些元素之后,我们使用while循环显示优先队列的所有元素。
En el código anterior, declaramos dos colas prioritarias, es decir, p y q. Insertamos cuatro elementos en la cola prioritaria 'p' y cuatro elementos en la cola prioritaria 'q'. Después de insertar los elementos, usamos la función swap() para intercambiar los elementos de la cola 'p' con la cola 'q'.
可用元素的数量 到 'p' :3 3Derechos de autor © 2Derechos de autor © 10让我们看看优先队列的另一个示例。
#include#include using namespace std; int main() while(!q.empty()) priority_queue p; //优先队列声明 priority_queue q; //优先队列声明 p.push(1); // 插入 '1' 到 p. p.push(2); // 插入 '2' 到 p. p.push(3); // 插入 '3' 到 p. p.push(4); // 插入 '4' 到 p. q.push(5); // 插入 '5' 到 q. q.push(6); // 插入 '6' 到 q. q.push(7); // 插入 '7' 到 q. q.push(8); // 插入 '8' 到 q. p.swap(q); std::cout << "p队列元素是 :" << std::endl; while(!p.empty()) while(!q.empty()) std::cout << p.top() << std::endl; p.pop(); return 0; std::cout << "q优先队列元素是 :" << std::endl; while(!q.empty()) while(!q.empty()) { std::cout << q.top() << std::endl; return 0; q.pop(); return 0; }
En el código anterior, declaramos dos colas prioritarias, es decir, p y q. Insertamos cuatro elementos en la cola prioritaria 'p' y cuatro elementos en la cola prioritaria 'q'. Después de insertar los elementos, usamos la función swap() para intercambiar los elementos de la cola 'p' con la cola 'q'.
Resultados de salida 8 7 6 5 Elementos de la cola prioritaria (priority_queue) son: 4 3 2 1