Partager via


priority_queue::priority_queue

Construit une priority_queue qui est vide ou qui est une copie d'une plage d'un objet conteneur de base ou d'un autre priority_queue.

priority_queue( ); 
explicit priority_queue( 
   const Traits& __Comp 
); 
priority_queue( 
   const Traits& __Comp, 
   const container_type& _Cont 
); 
priority_queue( 
   const priority_queue& _Right 
); 
template<class InputIterator> 
   priority_queue( 
      InputIterator _First,  
      InputIterator _Last 
); 
template<class InputIterator> 
   priority_queue( 
      InputIterator _First,  
      InputIterator _Last, 
      const Traits& __Comp 
); 
template<class InputIterator> 
   priority_queue( 
      InputIterator _First,  
      InputIterator _Last, 
      const Traits& __Comp,  
      const container_type& _Cont 
);

Paramètres

  • __Comp
    La fonction de comparaison de type const Traits utilisé pour classer les éléments de la priority_queue, qui utilise par défaut la fonction de comparaison du conteneur de base.

  • _Cont
    Le conteneur de base duquel la priority_queue construite doit être copiée.

  • _Right
    La priority_queue de laquelle l'ensemble construit doit être une copie.

  • _First
    Position du premier élément dans la plage d'éléments à copier.

  • _Last
    Position du premier élément au delà de la plage d'éléments à copier.

Notes

Chacun des trois premiers constructeurs spécifie une priority_queue initiale vide, le second spécifiant le type de fonction de comparaison (_Comp) à utiliser pour établir l'ordre des éléments et le troisième spécifiant de manière explicite le container_type (_Cont) à utiliser. Le mot clé explicit supprime certains genres de conversion de type automatique.

Le quatrième constructeur spécifie une copie de la priority_queue _Right.

Les trois derniers constructeurs copiez la plage [_First, _Last) d'un certain conteneur et utilisent les valeurs pour initialiser une priority_queue avec une augmentation du caractère explicite lorsqu'ils spécifient le type de comparaison de la classe Caractéristiques et container_type.

Exemple

// pqueue_ctor.cpp
// compile with: /EHsc
#include <queue>
#include <vector>
#include <deque>
#include <list>
#include <iostream>

int main( )
{
   using namespace std;

   // The first member function declares priority_queue
   // with a default vector base container
   priority_queue <int> q1;
   cout << "q1 = ( ";
   while ( !q1.empty( ) )
   {
      cout << q1.top( ) << " ";
      q1.pop( );
   }
   cout << ")" << endl;

   // Explicitly declares a priority_queue with nondefault
   // deque base container
   priority_queue <int, deque <int> > q2;
   q2.push( 5 );
   q2.push( 15 );
   q2.push( 10 );
   cout << "q2 = ( ";
   while ( !q2.empty( ) )
   {
      cout << q2.top( ) << " ";
      q2.pop( );
   }
   cout << ")" << endl;

   // This method of printing out the elements of a priority_queue
   // removes the elements from the priority queue, leaving it empty
   cout << "After printing, q2 has " << q2.size( ) << " elements." << endl;

   // The third member function declares a priority_queue 
   // with a vector base container and specifies that the comparison 
   // function greater is to be used for ordering elements
   priority_queue <int, vector<int>, greater<int> > q3;
   q3.push( 2 );
   q3.push( 1 );
   q3.push( 3 );
   cout << "q3 = ( ";
   while ( !q3.empty( ) )
   {
      cout << q3.top( ) << " ";
      q3.pop( );
   }
   cout << ")" << endl;

   // The fourth member function declares a priority_queue and
   // initializes it with elements copied from another container:
   // first, inserting elements into q1, then copying q1 elements into q4
   q1.push( 100 );
   q1.push( 200 );
   priority_queue <int> q4( q1 );
   cout << "q4 = ( ";   
   while ( !q4.empty( ) )
   {
      cout << q4.top( ) << " ";
      q4.pop( );
   }
   cout << ")" << endl;

   // Creates an auxiliary vector object v5 to be used to initialize q5
   vector <int> v5;
   vector <int>::iterator v5_Iter;
   v5.push_back( 10 );
   v5.push_back( 30 );
   v5.push_back( 20 );
   cout << "v5 = ( " ;
   for ( v5_Iter = v5.begin( ) ; v5_Iter != v5.end( ) ; v5_Iter++ )
      cout << *v5_Iter << " ";
   cout << ")" << endl;

   // The fifth member function declares and
   // initializes a priority_queue q5 by copying the
   // range v5[_First, _Last) from vector v5
   priority_queue <int> q5( v5.begin( ), v5.begin( ) + 2 );
   cout << "q5 = ( ";
   while ( !q5.empty( ) )
   {
      cout << q5.top( ) << " ";
      q5.pop( );
   }
   cout << ")" << endl;

   // The sixth member function declares a priority_queue q6
   // with a comparison function greater and initializes q6
   // by copying the range v5[_First, _Last) from vector v5
   priority_queue <int, vector<int>, greater<int> > 
      q6( v5.begin( ), v5.begin( ) + 2 );
   cout << "q6 = ( ";
   while ( !q6.empty( ) )
   {
      cout << q6.top( ) << " ";
      q6.pop( );
   }
   cout << ")" << endl;
}

Sortie

q1 = ( )
q2 = ( 15 10 5 )
After printing, q2 has 0 elements.
q3 = ( 1 2 3 )
q4 = ( 200 100 )
v5 = ( 10 30 20 )
q5 = ( 30 10 )
q6 = ( 10 30 )

Configuration requise

En-tête: <File d'attente>

Espace de noms : std

Voir aussi

Référence

priority_queue, classe

Bibliothèque STL (Standard Template Library)