priority_queue::priority_queue
空か、基本コンテナー オブジェクトまたは別の priority_queue の範囲のコピーである 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
);
パラメーター
__Comp
基本コンテナーの関数を比較する既定値 priority_queue の要素を並べ替えに使用される型 [const]Traits の比較関数。_Cont
構築された priority_queue がコピーであることである基本コンテナー。_Right
構築されたセットがコピーであることです priority_queue。_First
コピーする要素範囲内の先頭の要素の位置。_Last
コピーする要素範囲を超える最初の要素の位置。
解説
明示的に使用する container_type (_Cont) を指定する最初の 3 のコンストラクターでは、空の初期 priority_queue、2 番目のを指定し、要素と番目の順序の確立に使用する比較関数 (_Comp) の型を指定します。キーワード explicit は、特定の種類の自動型変換を抑制します。
4 つ目のコンストラクターは、priority_queue _Rightのコピーを指定します。
最後の 3 のコンストラクターは、コンテナーの範囲 [_First、_Last) をコピーし、クラス Traits と container_typeの比較関数の型の指定を大きくする explicitness の priority_queue を初期化するには、値を使用します。
使用例
// 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;
}
出力
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 )
必要条件
ヘッダー: <queue>
名前空間: std