concurrent_vector 類別
concurrent_vector
類別是一種序列容器類別,允許以隨機方式存取任何項目。 它會啟用並行安全附加、項目存取、迭代器存取及迭代器周遊作業。 在這裡,並行安全表示指標或反覆運算器一律有效。 這不是元素初始化或特定周遊順序的保證。
語法
template<typename T, class _Ax>
class concurrent_vector: protected details::_Allocator_base<T,
_Ax>,
private details::_Concurrent_vector_base_v4;
參數
T
要儲存在向量中的項目數據類型。
_斧頭
型別,表示預存配置器物件,該物件會封裝並行向量之內存配置和解除分配的詳細數據。 這個引數是選擇性的,而且預設值是 allocator<T>
。
成員
公用 Typedefs
名稱 | 描述 |
---|---|
allocator_type |
型別,表示並行向量的配置器類別。 |
const_iterator |
類型,提供隨機存取反覆運算器,可讀取 const 並行向量中的專案。 |
const_pointer |
型別,提供並行向量中項目指標 const 。 |
const_reference |
型別,提供儲存在並行向量中的元素參考 const ,以便讀取和執行 const 作業。 |
const_reverse_iterator |
類型,提供隨機存取反覆運算器,可讀取 const 並行向量中的任何專案。 |
difference_type |
類型,提供並行向量中兩個元素之間的帶正負號距離。 |
iterator |
類型,提供隨機存取反覆運算器,可讀取並行向量中的任何專案。 使用反覆運算器修改項目並非並行安全。 |
pointer |
類型,提供並行向量中項目指標。 |
reference |
型別,提供儲存在並行向量中的項目參考。 |
reverse_iterator |
類型,提供隨機存取反覆運算器,可讀取反向並行向量中的任何專案。 使用反覆運算器修改項目並非並行安全。 |
size_type |
計算並行向量中項目數目的型別。 |
value_type |
型別,表示儲存在並行向量中的數據類型。 |
公用建構函式
名稱 | 描述 |
---|---|
concurrent_vector | 已多載。 建構並行向量。 |
~concurrent_vector解構函式 | 清除所有元素,並終結此併行向量。 |
公用方法
名稱 | 描述 |
---|---|
assign | 已多載。 清除並行向量的專案,並將其指派給它的 _N 複本 _Item ,或反覆運算器範圍 [ _Begin 、 _End 所指定的值 ]。 這個方法不是並行安全的方法。 |
at | 已多載。 提供存取並行向量中指定索引處的專案。 這個方法對於讀取作業而言是並行安全的,而且在增加向量的同時,只要您確定該值 _Index 小於並行向量的大小即可。 |
back | 已多載。 傳回並行向量中最後一個項目 const 的參考或參考。 如果並行向量是空的,則傳回值是未定義的。 此方法是並行安全的方法。 |
begin | 已多載。 傳回類型 iterator 為 或 const_iterator 的反覆運算器至並行向量的開頭。 此方法是並行安全的方法。 |
capacity | 傳回並行向量可以成長的大小上限,而不需要配置更多記憶體。 此方法是並行安全的方法。 |
cbegin | 將型 const_iterator 別的反覆運算器傳回至並行向量的開頭。 此方法是並行安全的方法。 |
cend | 將型 const_iterator 別的反覆運算器傳回至並行向量結尾。 此方法是並行安全的方法。 |
clear | 清除並行向量中的所有專案。 這個方法不是並行安全的方法。 |
crbegin | 將型 const_reverse_iterator 別的反覆運算器傳回至並行向量的開頭。 此方法是並行安全的方法。 |
crend | 將型 const_reverse_iterator 別的反覆運算器傳回至並行向量結尾。 此方法是並行安全的方法。 |
empty | 測試在呼叫這個方法時,並行向量是否為空白。 此方法是並行安全的方法。 |
end | 已多載。 傳回類型 iterator 為 或 const_iterator 的反覆運算器至並行向量的結尾。 此方法是並行安全的方法。 |
front | 已多載。 傳回並行向量中第一個項目 const 的參考或參考。 如果並行向量是空的,則傳回值是未定義的。 此方法是並行安全的方法。 |
get_allocator | 傳回用來建構並行向量的配置器複本。 此方法是並行安全的方法。 |
grow_by | 已多載。 依 _Delta 專案成長這個並行向量。 此方法是並行安全的方法。 |
grow_to_at_least | 將這個並行向量成長,直到它至少有 _N 元素為止。 此方法是並行安全的方法。 |
max_size | 傳回並行向量可以保存的元素數目上限。 此方法是並行安全的方法。 |
push_back | 已多載。 將指定的專案附加至並行向量的結尾。 此方法是並行安全的方法。 |
rbegin | 已多載。 傳回類型 reverse_iterator 為 或 const_reverse_iterator 的反覆運算器至並行向量的開頭。 此方法是並行安全的方法。 |
rend | 已多載。 傳回類型 reverse_iterator 為 或 const_reverse_iterator 的反覆運算器至並行向量的結尾。 此方法是並行安全的方法。 |
reserve | 配置足夠的空間,以擴大並行向量的大小 _N ,而不需要稍後配置更多記憶體。 這個方法不是並行安全的方法。 |
resize | 已多載。 視需要,將並行向量的大小變更為所要求的大小、刪除或新增專案。 這個方法不是並行安全的方法。 |
shrink_to_fit | 壓縮並行向量的內部表示法,以減少片段並優化記憶體使用量。 這個方法不是並行安全的方法。 |
size | 傳回並行向量中的項目數目。 此方法是並行安全的方法。 |
swap | 交換兩個並行向量的內容。 這個方法不是並行安全的方法。 |
公用運算子
名稱 | 描述 |
---|---|
operator[] | 已多載。 提供存取並行向量中指定索引處的專案。 這個方法對於讀取作業而言是並行安全的方法,而且在增加向量的同時,只要您確定該值 _Index 小於並行向量的大小即可。 |
operator= | 已多載。 將另一個 concurrent_vector 物件的內容指派給這個物件。 這個方法不是並行安全的方法。 |
備註
如需 類別 concurrent_vector
的詳細資訊,請參閱 平行容器和物件。
繼承階層架構
_Concurrent_vector_base_v4
_Allocator_base
concurrent_vector
需求
標頭: concurrent_vector.h
命名空間: concurrency
assign
清除並行向量的專案,並將其指派給它的 _N
複本 _Item
,或反覆運算器範圍 [ _Begin
、 _End
所指定的值 ]。 這個方法不是並行安全的方法。
void assign(
size_type _N,
const_reference _Item);
template<class _InputIterator>
void assign(_InputIterator _Begin,
_InputIterator _End);
參數
_InputIterator
指定反覆運算器的型別。
_N
要複製到並行向量的項目數目。
_專案
用來填滿並行向量之值的參考。
_開始
來源範圍第一個專案的反覆運算器。
_結束
一個反覆運算器,超過來源範圍的最後一個專案。
備註
assign
不是並行安全。 當您呼叫此方法時,您必須確定沒有其他線程在並行向量上叫用方法。
時間
提供存取並行向量中指定索引處的專案。 這個方法對於讀取作業而言是並行安全的,而且在增加向量的同時,只要您確定該值 _Index
小於並行向量的大小即可。
reference at(size_type _Index);
const_reference at(size_type _Index) const;
參數
_指數
要擷取之專案的索引。
傳回值
指定索引處項目的參考。
備註
傳回非const
參考的函at
式版本無法用來同時寫入來自不同線程的專案。 不同的同步處理對象應該用來同步處理相同資料元素的並行讀取和寫入作業。
如果 _Index
大於或等於並行向量的大小,而且range_error
索引是針對向量的中斷部分,則方法會out_of_range
擲回 。 如需向量如何中斷的詳細資訊,請參閱 平行容器和物件。
上一步
傳回並行向量中最後一個項目 const
的參考或參考。 如果並行向量是空的,則傳回值是未定義的。 此方法是並行安全的方法。
reference back();
const_reference back() const;
傳回值
並行向量中最後一個項目 const
的參考或參考。
begin
傳回類型 iterator
為 或 const_iterator
的反覆運算器至並行向量的開頭。 此方法是並行安全的方法。
iterator begin();
const_iterator begin() const;
傳回值
類型 iterator
或 const_iterator
並行向量開頭的反覆運算器。
處理能力
傳回並行向量可以成長的大小上限,而不需要配置更多記憶體。 此方法是並行安全的方法。
size_type capacity() const;
傳回值
並行向量可以成長而不必配置更多記憶體的大小上限。
備註
不同於C++標準連結庫 vector
, concurrent_vector
如果物件配置更多記憶體,則物件不會移動現有的元素。
cbegin
將型 const_iterator
別的反覆運算器傳回至並行向量的開頭。 此方法是並行安全的方法。
const_iterator cbegin() const;
傳回值
類型為 const_iterator
並行向量開頭的反覆運算器。
cend
將型 const_iterator
別的反覆運算器傳回至並行向量結尾。 此方法是並行安全的方法。
const_iterator cend() const;
傳回值
並行向量結尾之型 const_iterator
別的反覆運算器。
clear
清除並行向量中的所有專案。 這個方法不是並行安全的方法。
void clear();
備註
clear
不是並行安全。 當您呼叫此方法時,您必須確定沒有其他線程在並行向量上叫用方法。 clear
不會釋放內部陣列。 若要釋放內部數位,請在 之後clear
呼叫 函式shrink_to_fit
。
concurrent_vector
建構並行向量。
explicit concurrent_vector(
const allocator_type& _Al = allocator_type());
concurrent_vector(
const concurrent_vector& _Vector);
template<class M>
concurrent_vector(
const concurrent_vector<T,
M>& _Vector,
const allocator_type& _Al = allocator_type());
concurrent_vector(
concurrent_vector&& _Vector);
explicit concurrent_vector(
size_type _N);
concurrent_vector(
size_type _N,
const_reference _Item,
const allocator_type& _Al = allocator_type());
template<class _InputIterator>
concurrent_vector(_InputIterator _Begin,
_InputIterator _End,
const allocator_type& _Al = allocator_type());
參數
M
來源向量的配置器類型。
_InputIterator
輸入迭代器的類型。
_鋁
搭配這個物件使用的配置器類別。
_向量
要從中複製或移動項目的來源 concurrent_vector
物件。
_N
concurrent_vector
物件的初始容量。
_專案
建構物件中專案的值。
_開始
項目範圍中要複製的第一個項目位置。
_結束
項目範圍之外要複製的第一個項目位置。
備註
所有建構函式都會儲存配置器物件 _Al
,並初始化向量。
第一個建構函式指定空的初始向量,並明確指定配置器類型。 要使用的 。
第二個和第三個建構函式會指定並行向量 _Vector
的複本。
第四個建構函式會指定移動並行向量 _Vector
。
第五個建構函式會指定類別之預設值T
元素的指定數位 (_N
) 重複。
第六個建構函式會指定 值的 重複專案_N
_Item
。
最後一個建構函式會指定反覆運算器範圍 [ 、 _Begin
_End
所提供的值。
~concurrent_vector
清除所有元素,並終結此併行向量。
~concurrent_vector();
crbegin
將型 const_reverse_iterator
別的反覆運算器傳回至並行向量的開頭。 此方法是並行安全的方法。
const_reverse_iterator crbegin() const;
傳回值
類型為 const_reverse_iterator
並行向量開頭的反覆運算器。
crend
將型 const_reverse_iterator
別的反覆運算器傳回至並行向量結尾。 此方法是並行安全的方法。
const_reverse_iterator crend() const;
傳回值
並行向量結尾之型 const_reverse_iterator
別的反覆運算器。
empty
測試在呼叫這個方法時,並行向量是否為空白。 此方法是並行安全的方法。
bool empty() const;
傳回值
true
如果呼叫函式時向量是空的,則為 , false
否則為 。
end
傳回類型 iterator
為 或 const_iterator
的反覆運算器至並行向量的結尾。 此方法是並行安全的方法。
iterator end();
const_iterator end() const;
傳回值
類型 iterator
或 const_iterator
並行向量結尾的反覆運算器。
front
傳回並行向量中第一個項目 const
的參考或參考。 如果並行向量是空的,則傳回值是未定義的。 此方法是並行安全的方法。
reference front();
const_reference front() const;
傳回值
並行向量中第一個項目 const
的參考或參考。
get_allocator
傳回用來建構並行向量的配置器複本。 此方法是並行安全的方法。
allocator_type get_allocator() const;
傳回值
用來建構 concurrent_vector
物件的配置器複本。
grow_by
依 _Delta
專案成長這個並行向量。 此方法是並行安全的方法。
iterator grow_by(
size_type _Delta);
iterator grow_by(
size_type _Delta,
const_reference _Item);
參數
_三角洲
要附加至 物件的項目數目。
_專案
要用來初始化新專案的值。
傳回值
附加第一個專案的反覆運算器。
備註
如果未 _Item
指定 ,則會預設建構新的專案。
grow_to_at_least
將這個並行向量成長,直到它至少有 _N
元素為止。 此方法是並行安全的方法。
iterator grow_to_at_least(size_type _N);
參數
_N
物件的新最小大小 concurrent_vector
。
傳回值
指向附加序列開頭的反覆運算器,如果未附加任何專案,則指向索引 _N
處的專案。
max_size
傳回並行向量可以保存的元素數目上限。 此方法是並行安全的方法。
size_type max_size() const;
傳回值
物件可以保存的元素 concurrent_vector
數目上限。
operator=
將另一個 concurrent_vector
物件的內容指派給這個物件。 這個方法不是並行安全的方法。
concurrent_vector& operator= (
const concurrent_vector& _Vector);
template<class M>
concurrent_vector& operator= (
const concurrent_vector<T, M>& _Vector);
concurrent_vector& operator= (
concurrent_vector&& _Vector);
參數
M
來源向量的配置器類型。
_向量
來源 concurrent_vector
物件。
傳回值
這個 concurrent_vector
對象的參考。
operator[]
提供存取並行向量中指定索引處的專案。 這個方法對於讀取作業而言是並行安全的方法,而且在增加向量的同時,只要您確定該值 _Index
小於並行向量的大小即可。
reference operator[](size_type _index);
const_reference operator[](size_type _index) const;
參數
_指數
要擷取之專案的索引。
傳回值
指定索引處項目的參考。
備註
傳回非const
參考的 operator []
版本無法同時寫入來自不同線程的專案。 不同的同步處理對象應該用來同步處理相同資料元素的並行讀取和寫入作業。
不會執行界限檢查, _Index
以確保 是並行向量的有效索引。
push_back
將指定的專案附加至並行向量的結尾。 此方法是並行安全的方法。
iterator push_back(const_reference _Item);
iterator push_back(T&& _Item);
參數
_專案
要附加的值。
傳回值
附加專案的反覆運算器。
rbegin
傳回類型 reverse_iterator
為 或 const_reverse_iterator
的反覆運算器至並行向量的開頭。 此方法是並行安全的方法。
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
傳回值
類型 reverse_iterator
或 const_reverse_iterator
並行向量開頭的反覆運算器。
rend
傳回類型 reverse_iterator
為 或 const_reverse_iterator
的反覆運算器至並行向量的結尾。 此方法是並行安全的方法。
reverse_iterator rend();
const_reverse_iterator rend() const;
傳回值
類型 reverse_iterator
或 const_reverse_iterator
並行向量結尾的反覆運算器。
reserve
配置足夠的空間,以擴大並行向量的大小 _N
,而不需要稍後配置更多記憶體。 這個方法不是並行安全的方法。
void reserve(size_type _N);
參數
_N
要保留空間的項目數目。
備註
reserve
不是並行安全。 當您呼叫此方法時,您必須確定沒有其他線程在並行向量上叫用方法。 方法傳回之後並行向量的容量可能會大於要求的保留。
調整大小
視需要,將並行向量的大小變更為所要求的大小、刪除或新增專案。 這個方法不是並行安全的方法。
void resize(
size_type _N);
void resize(
size_type _N,
const T& val);
參數
_N
並行向量的新大小。
val
如果新的大小大於原始大小,則會將新項目的值加入至向量。 如果省略值,新物件會為其類型指派預設值。
備註
如果容器的大小小於要求的大小,元素會新增至向量,直到達到要求的大小為止。 如果容器的大小大於要求的大小,則會刪除最接近容器結尾的專案,直到容器達到大小 _N
為止。 如果容器現在的大小與所要求的大小相同,則不會採取任何動作。
resize
不是並行安全。 當您呼叫此方法時,您必須確定沒有其他線程在並行向量上叫用方法。
shrink_to_fit
壓縮並行向量的內部表示法,以減少片段並優化記憶體使用量。 這個方法不是並行安全的方法。
void shrink_to_fit();
備註
此方法會在內部重新配置記憶體行動元素,使所有反覆運算器失效。 shrink_to_fit
不是並行安全。 當您呼叫此函式時,您必須確定沒有其他線程在並行向量上叫用方法。
size
傳回並行向量中的項目數目。 此方法是並行安全的方法。
size_type size() const;
傳回值
這個 concurrent_vector
物件中的項目數目。
備註
傳回的大小保證包含呼叫 函 push_back
式 所附加的所有元素,或叫用此方法之前已完成的成長作業。 不過,它也可能包含已配置但仍在建構的專案,同時呼叫任何成長方法。
swap
交換兩個並行向量的內容。 這個方法不是並行安全的方法。
void swap(concurrent_vector& _Vector);
參數
_向量
要 concurrent_vector
交換內容的物件。