concurrent_priority_queue 類別允許多個執行緒同時推入和彈出項目。 項目會以優先權順序做為彈出依據,而優先權由函式提供的樣板引數決定。
語法
template <typename T,
typename _Compare = std::less<T>,
typename _Ax = std::allocator<T>>
class concurrent_priority_queue;
參數
T
要儲存在優先權佇列中之項目的資料類型。
_比較
函式物件的類型,可用來比較兩個項目值做為排序鍵,以判斷其在優先權佇列中的相對順序。 這個引數是選用引數,且預設值是二元述詞 less<T>。
_斧頭
代表預存配置器物件的類型,該物件會封裝有關配置和解除配置並行優先權佇列之記憶體的詳細資訊。 這個引數是選擇性的,而且預設值是 allocator<T>。
成員
公用 Typedefs
| 名稱 | 描述 |
|---|---|
allocator_type |
代表並行優先權佇列之配置器類別的類型。 |
const_reference |
代表儲存在並行優先權佇列中的類型項目之常數參考的類型。 |
reference |
代表儲存在並行優先權佇列中的類型項目參考的類型。 |
size_type |
計算並行優先權佇列中項目數的類型。 |
value_type |
代表並行優先權佇列中儲存之資料類型的類型。 |
公用建構函式
| 名稱 | 描述 |
|---|---|
| concurrent_priority_queue | 已多載。 建構並行優先權佇列。 |
公用方法
| 名稱 | 描述 |
|---|---|
| 清除 | 清除並行優先權中的所有項目。 這個方法不是並行安全的方法。 |
| 空 | 測試呼叫這個方法時並行優先權佇列是否是空的。 此方法是並行安全的方法。 |
| get_allocator | 傳回用來建構並行優先權佇列之配置器的複本。 此方法是並行安全的方法。 |
| 推送 | 已多載。 將項目加入至並行優先權佇列。 此方法是並行安全的方法。 |
| 大小 | 傳回並行優先權佇列中的項目數。 此方法是並行安全的方法。 |
| 交換 | 將兩個並行優先權佇列的內容交換。 這個方法不是並行安全的方法。 |
| try_pop | 如果佇列不是空的,則移除並傳回佇列中最高優先權的項目。 此方法是並行安全的方法。 |
公用運算子
| 名稱 | 描述 |
|---|---|
| 運算子= | 已多載。 將另一個 concurrent_priority_queue 物件的內容指派給這個物件。 這個方法不是並行安全的方法。 |
備註
如需 類別 concurrent_priority_queue 的詳細資訊,請參閱 平行容器和物件。
繼承階層架構
concurrent_priority_queue
需求
標頭: concurrent_priority_queue.h
命名空間: concurrency
清楚
清除並行優先權中的所有項目。 這個方法不是並行安全的方法。
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
輸入迭代器的類型。
_鋁
搭配這個物件使用的配置器類別。
_Init_capacity
concurrent_priority_queue 物件的初始容量。
_開始
要複製的元素範圍中第一個元素的位置。
_結束
超出要複製之元素範圍的第一個元素的位置。
_Src
要從中複製或移動項目的來源 concurrent_priority_queue 物件。
備註
所有建構函式都會儲存配置器物件 _Al ,並初始化優先順序佇列。
第一個建構函式會指定空的初始優先順序佇列,並選擇性地指定配置器。
第二個建構函式會指定具有初始容量 _Init_capacity 的優先順序佇列,並選擇性地指定配置器。
第三個建構函式會指定反覆運算器範圍 [ 、 _Begin_End] 所提供的值,並選擇性地指定配置器。
第四個和第五個建構函式會指定優先順序佇列 _Src的複本。
第六個和第七個建構函式會指定優先順序佇列 _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_type size() const;
傳回值
這個 concurrent_priority_queue 物件中的項目數目。
備註
傳回的大小保證包含呼叫 函式 push所新增的所有專案。 不過,它可能不會反映暫止並行作業的結果。
交換
將兩個並行優先權佇列的內容交換。 這個方法不是並行安全的方法。
void swap(concurrent_priority_queue& _Queue);
參數
_佇列
要 concurrent_priority_queue 交換內容的物件。
try_pop
如果佇列不是空的,則移除並傳回佇列中最高優先權的項目。 此方法是並行安全的方法。
bool try_pop(reference _Elem);
參數
_Elem
如果佇列不是空的,則會以最高優先順序元素填入變數的參考。
傳回值
true 如果已彈出值,則為 , false 否則為 。