Contenedor de secuencia en STL —— priority_queue (cola de prioridad)

Contenedor de secuencia en STL —— priority_queue (cola de prioridad)

  Priority_queue, es decir, "cola de prioridad". La cola ordinaria es una estructura de datos de primero en entrar, primero en salir. Los elementos se agregan al final de la cola y se eliminan del encabezado de la cola. En la cola de prioridad, los elementos tienen prioridad. Al acceder a un elemento, primero se elimina el elemento con mayor prioridad. Las colas de prioridad tienen las características de comportamiento de primero en entrar, más grande en salir. Por lo general, se implementa utilizando una estructura de datos de pila.
  Priority_queue es un miembro importante de C ++ STL, debe incluir el archivo de encabezado cuando lo use:

#include <queue>;

  Priority_queue es una especie de adaptador de contenedor. Los datos en el adaptador de contenedor se organizan de diferentes formas de prioridad.

Uno, la inicialización de priority_queue

Existen las siguientes formas, los ejemplos son los siguientes:

queue<int> a;
queue<int> b(a); //拷贝队列a给队列b

Dos operaciones importantes del objeto priority_queue

Listados de la siguiente manera:

a.push(5); //将5压入队列的末端
a.pop(); //弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值
a.top(); //返回优先队列中有最高优先级的元素
a.empty(); //判断a是否为空,空则返回ture,不空则返回false
a.size(); //返回队列的长度
a=b; //队列b赋值给队列a

Tres, establecimiento de prioridades

Hay varias formas, que se enumeran a continuación:

struct cmp1
{
    
    
    bool operator ()(const int &a,const int &b)
    {
    
    
       return a>b;//最小值优先
   	}
};
struct cmp2
{
    
    
	bool operator ()(const int &a,const int &b)
	{
    
    
	    return a<b;//最大值优先
	}
};
struct node1
{
    
    
	int u;
	bool operator < (const node1 &a) const
	{
    
    
		return u>a.u;//最小值优先
	}
};
struct node2
{
    
    
	int u;
	bool operator < (const node2 &a) const
	{
    
    
		return u<a.u;//最大值优先
	}
};
priority_queue<int>q1;//采用默认优先级构造队列,最大值优先
priority_queue<int,vector<int>,cmp1>q2;//最小值优先 
priority_queue<int,vector<int>,cmp2>q3;//最大值优先
priority_queue<int,vector<int>,greater<int> >q4;//最小值优先
//注意“>>”会被认为错误,因为这是右移运算符,所以这里用空格号隔开
priority_queue<int,vector<int>,less<int> >q5;//最大值优先
priority_queue<node1>q6;//最小值优先
priority_queue<node2>q7;//最大值优先

Supongo que te gusta

Origin blog.csdn.net/hyl1181/article/details/108567373
Recomendado
Clasificación