concurrent_vector
類別是一種序列容器類別,允許以隨機方式存取任何項目。 它會啟用並行安全附加、項目存取、迭代器存取及迭代器周遊作業。 在這裡,並行安全表示指標或反覆運算器一律有效。 它不是專案初始化或特定遍歷順序的保證。
template<typename T, class _Ax>
class concurrent_vector: protected details::_Allocator_base<T,
_Ax>,
private details::_Concurrent_vector_base_v4;
要儲存在向量中之元素的資料類型。
代表預存配置器物件的類型,封裝並行向量之記憶體配置和解除配置的詳細資料。 這個引數是選擇性的,而且預設值是 allocator<T>
。
公用 Typedefs
命名空間: 並行
assign
清除並行向量的元素,並指派給它 _N
的複本 _Item
或反覆運算器範圍 [ _Begin
, _End
) 所指定的值。 這個方法不是平行存取安全的。
void assign(
size_type _N,
const_reference _Item);
template<class _InputIterator>
void assign(_InputIterator _Begin,
_InputIterator _End);
_InputIterator
指定之反覆運算器的類型。
要複製到並行向量中的專案數。
_Item
參考用來填滿並行向量的值。
_Begin
來源範圍中第一個元素的反覆運算器。
一個反覆運算器,指向來源範圍最後一個元素之後的一個。
assign
不是平行存取安全的。 當您呼叫這個方法時,您必須確定沒有其他執行緒在並行向量上叫用方法。
提供存取並行向量中指定索引處的專案。 如果您確定值 _Index
小於並行向量的大小,則此方法為讀取作業的平行存取安全,同時也會在增加向量時進行。
reference at(size_type _Index);
const_reference at(size_type _Index) const;
_Index
要抓取之元素的索引。
給定索引處之專案的參考。
傳回非 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
的反覆運算器。
將型 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());
來源向量的配置器類型。
_InputIterator
輸入迭代器的類型。
搭配這個物件使用的配置器類別。
_Vector
要從中複製或移動項目的來源 concurrent_vector
物件。
concurrent_vector
物件的初始容量。
_Item
結構化物件中專案的值。
_Begin
項目範圍中要複製的第一個項目位置。
項目範圍之外要複製的第一個項目位置。
所有的函式都會儲存配置器物件 _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
否則為。
傳回型 iterator
別或 const_iterator
並行向量結尾的反覆運算器。 這個方法是平行存取安全的。
iterator end();
const_iterator end() const;
型 iterator
別或 const_iterator
並行向量結尾的反覆運算器。
傳回並行向量中第一個元素的參考或 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);
_Delta
要附加至物件的元素數目。
_Item
用來初始化新元素的值。
附加至第一個專案的反覆運算器。
如果 _Item
未指定,則會預設建立新的元素。
grow_to_at_least
擴大這個並行向量,直到至少 _N
有元素為止。 這個方法是平行存取安全的。
iterator grow_to_at_least(size_type _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);
來源向量的配置器類型。
_Vector
來源 concurrent_vector
物件。
這個 concurrent_vector
物件的參考。
operator[]
提供存取並行向量中指定索引處的專案。 這個方法是讀取作業的平行存取安全,同時也是在成長向量時,只要確定值 _Index
小於並行向量的大小即可。
reference operator[](size_type _index);
const_reference operator[](size_type _index) const;
_Index
要抓取之元素的索引。
給定索引處之專案的參考。
傳回非 const
參考的版本 operator []
不能用來從不同執行緒同時寫入專案。 應該使用不同的同步處理物件,將並行讀取和寫入作業同步處理至相同的資料元素。
不會執行任何界限檢查,以確保對並行向量而言 _Index
是有效的索引。
push_back
將指定的專案附加至並行向量的結尾。 這個方法是平行存取安全的。
iterator push_back(const_reference _Item);
iterator push_back(T&& _Item);
_Item
要附加的值。
附加專案的反覆運算器。
rbegin
傳回類型 reverse_iterator
的反覆運算器,或 const_reverse_iterator
傳回並行向量開頭的。 這個方法是平行存取安全的。
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
型 reverse_iterator
別的反覆運算器,或 const_reverse_iterator
並行向量開頭的。
傳回型 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);
要保留空間的元素數目。
reserve
不是平行存取安全的。 當您呼叫這個方法時,您必須確定沒有其他執行緒在並行向量上叫用方法。 在方法傳回之後,並行向量的容量可能會大於要求的保留。
視需要將並行向量的大小變更為所要求的大小、刪除或新增元素。 這個方法不是平行存取安全的。
void resize(
size_type _N);
void resize(
size_type _N,
const T& val);
並行向量的新大小。
如果新的大小大於原始大小,則會將新項目的值加入至向量。 如果省略此值,則會為新物件指派其類型的預設值。
如果容器的大小小於所要求的大小,則會將元素加入至向量,直到達到所要求的大小為止。 如果容器的大小大於所要求的大小,則會刪除最接近容器結尾的元素,直到容器達到大小 _N
為止。 如果容器現在的大小與所要求的大小相同,則不會採取任何動作。
resize
不是平行存取安全。 當您呼叫這個方法時,您必須確定沒有其他執行緒在並行向量上叫用方法。
shrink_to_fit
壓縮並行向量的內部標記法,以減少片段,並將記憶體使用量優化。 這個方法不是平行存取安全的。
void shrink_to_fit();
這個方法會在內部重新配置記憶體移動元素,使所有反覆運算器失效。 shrink_to_fit
不是平行存取安全的。 當您呼叫此函式時,您必須確定沒有其他執行緒在並行向量上叫用方法。
{1}size{2}
傳回並行向量中的元素數目。 這個方法是平行存取安全的。
size_type size() const;
此 concurrent_vector
物件中的元素數目。
傳回的大小保證會包含函式呼叫附加的所有專案,或在叫 push_back
用此方法之前完成已完成的作業。 不過,它也可能包含透過並行呼叫任何成長方法所配置但仍在結構內的元素。
交換兩個並行向量的內容。 這個方法不是平行存取安全的。
void swap(concurrent_vector& _Vector);
_Vector
要交換內容的 concurrent_vector
物件。
concurrency 命名空間
平行容器和物件