concurrent_priority_queue クラス
concurrent_priority_queue
クラスは、複数のスレッドが項目を同時にプッシュおよびポップできるようにするコンテナーです。 項目は優先順位の順にポップされます。この優先順位は、テンプレート引数として指定されたファンクタによって決まります。
構文
template <typename T,
typename _Compare= std::less<T>,
typename _Ax = std::allocator<T>
>,
typename _Ax = std::allocator<T>> class concurrent_priority_queue;
パラメーター
T
優先度付きキューに格納される要素のデータ型。
_Compare
並べ替えキーとして 2 つの要素の値を比較して、優先度付きキュー内での相対順序を決定できる関数オブジェクトの型。 この引数は省略可能であり、既定値は二項述語 less<T>
です。
_Ax
同時実行優先度付きキューのメモリの割り当てと割り当て解除に関する詳細をカプセル化する、格納されているアロケーター オブジェクトを表す型。 この引数は省略可能であり、既定値は allocator<T>
です。
メンバー
パブリック typedef
名前 | 説明 |
---|---|
allocator_type |
同時実行優先度付きキューのアロケーター クラスを表す型。 |
const_reference |
同時実行優先度付きキューに格納されている型の要素への const 参照を表す型。 |
reference |
同時実行優先度付きキューに格納されている型の要素への参照を表す型。 |
size_type |
同時実行優先度付きキュー内の要素の数をカウントする型。 |
value_type |
同時実行優先度付きキューに格納されているデータ型を表す型。 |
パブリック コンストラクター
名前 | 説明 |
---|---|
concurrent_priority_queue | 過負荷です。 同時実行優先度付きキューを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
clear | 同時実行優先度のすべての要素を消去します。 このメソッドはコンカレンシー セーフではありません。 |
empty | このメソッドが呼び出された時点で同時実行優先度付きキューが空かどうかをテストします。 このメソッドはコンカレンシー セーフです。 |
get_allocator | 同時実行優先度付きキューの構築に使用されるアロケーターのコピーを返します。 このメソッドはコンカレンシー セーフです。 |
push | 過負荷です。 同時実行優先度付きキューに要素を追加します。 このメソッドはコンカレンシー セーフです。 |
size | 同時実行優先度付きキュー内の要素の数を返します。 このメソッドはコンカレンシー セーフです。 |
スワップ | 2 つの同時実行優先度付きキューの内容を入れ替えます。 このメソッドはコンカレンシー セーフではありません。 |
try_pop | キューが空でない場合に、最も優先度の高い要素をキューから削除して返します。 このメソッドはコンカレンシー セーフです。 |
パブリック演算子
名前 | 説明 |
---|---|
operator= | 過負荷です。 別の concurrent_priority_queue オブジェクトの内容をこのオブジェクトに割り当てます。 このメソッドはコンカレンシー セーフではありません。 |
解説
concurrent_priority_queue
クラスの詳細については、「並列コンテナーと並列オブジェクト」を参照してください。
継承階層
concurrent_priority_queue
要件
ヘッダー: concurrent_priority_queue.h
名前空間: concurrency
clear
同時実行優先度のすべての要素を消去します。 このメソッドはコンカレンシー セーフではありません。
void clear();
解説
clear
はコンカレンシー セーフではありません。 このメソッドを呼び出すときは、他のスレッドが同時実行優先度付きキューに対してメソッドを呼び出していないことを確認する必要があります。 clear
はメモリを解放しません。
concurrent_priority_queue
同時実行優先度付きキューを構築します。
explicit concurrent_priority_queue(
const allocator_type& _Al = allocator_type());
explicit concurrent_priority_queue(
size_type _Init_capacity,
const allocator_type& _Al = allocator_type());
template<typename _InputIterator>
concurrent_priority_queue(_InputIterator _Begin,
_InputIterator _End,
const allocator_type& _Al = allocator_type());
concurrent_priority_queue(
const concurrent_priority_queue& _Src);
concurrent_priority_queue(
const concurrent_priority_queue& _Src,
const allocator_type& _Al);
concurrent_priority_queue(
concurrent_priority_queue&& _Src);
concurrent_priority_queue(
concurrent_priority_queue&& _Src,
const allocator_type& _Al);
パラメーター
_InputIterator
入力反復子の型。
_Al
このオブジェクトに対して使用するアロケーター クラス。
_Init_capacity
concurrent_priority_queue
オブジェクトの初期容量。
_Begin
コピーする要素範囲内の最初の要素の位置。
_End
コピーする要素範囲を超える最初の要素の位置。
_Src
要素のコピー元または移動元の concurrent_priority_queue
オブジェクト。
解説
すべてのコンストラクターが、アロケーター オブジェクト _Al
を格納し、優先度付きキューを初期化します。
最初のコンストラクターは、空の初期優先度付きキューを指定し、必要に応じてアロケーターを指定します。
2 番目のコンストラクターは、初期容量 _Init_capacity
が指定された優先度付きキューを指定し、必要に応じてアロケーターを指定します。
3 番目のコンストラクターは、反復子の範囲 (_Begin
, _End
) で提供される値を指定し、必要に応じてアロケーターを指定します。
4 番目と 5 番目のコンストラクターは、優先度付きキュー _Src
のコピーを指定します。
6 番目と 7 番目のコンストラクターは、優先度付きキュー _Src
の移動を指定します。
空
このメソッドが呼び出された時点で同時実行優先度付きキューが空かどうかをテストします。 このメソッドはコンカレンシー セーフです。
bool empty() const;
戻り値
関数が呼び出された時点で優先度付きキューが空だった場合は true
、それ以外の場合は false
。
get_allocator
同時実行優先度付きキューの構築に使用されるアロケーターのコピーを返します。 このメソッドはコンカレンシー セーフです。
allocator_type get_allocator() const;
戻り値
concurrent_priority_queue
オブジェクトの構築に使用されるアロケーターのコピー。
operator=
別の concurrent_priority_queue
オブジェクトの内容をこのオブジェクトに割り当てます。 このメソッドはコンカレンシー セーフではありません。
concurrent_priority_queue& operator= (const concurrent_priority_queue& _Src);
concurrent_priority_queue& operator= (concurrent_priority_queue&& _Src);
パラメーター
_Src
ソース concurrent_priority_queue
オブジェクト。
戻り値
この concurrent_priority_queue
オブジェクトへの参照。
プッシュ
同時実行優先度付きキューに要素を追加します。 このメソッドはコンカレンシー セーフです。
void push(const value_type& _Elem);
void push(value_type&& _Elem);
パラメーター
_Elem
同時実行優先度付きキューに追加する要素。
size
同時実行優先度付きキュー内の要素の数を返します。 このメソッドはコンカレンシー セーフです。
size_type size() const;
戻り値
この concurrent_priority_queue
オブジェクト内の要素の数。
解説
返されるサイズには、push
関数の呼び出しによって追加されたすべての要素が含まれることが保証されます。 ただし、保留中の同時操作の結果は反映されない場合があります。
スワップ
2 つの同時実行優先度付きキューの内容を入れ替えます。 このメソッドはコンカレンシー セーフではありません。
void swap(concurrent_priority_queue& _Queue);
パラメーター
_Queue
コンテンツのスワップに使用する concurrent_priority_queue
オブジェクト。
try_pop
キューが空でない場合に、最も優先度の高い要素をキューから削除して返します。 このメソッドはコンカレンシー セーフです。
bool try_pop(reference _Elem);
パラメーター
_Elem
キューが空でない場合に、最も優先度の高い要素が設定される変数への参照。
戻り値
値がポップされた場合は true
、それ以外の場合は false
。