次の方法で共有


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 同時実行優先度のすべての要素を消去します。 このメソッドはコンカレンシー セーフではありません。
このメソッドが呼び出された時点で同時実行優先度付きキューが空かどうかをテストします。 このメソッドはコンカレンシー セーフです。
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

関連項目

コンカレンシー名前空間
並列コンテナーと並列オブジェクト