分享方式:


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;

傳回值

類型 iteratorconst_iterator 並行向量開頭的反覆運算器。

處理能力

傳回並行向量可以成長的大小上限,而不需要配置更多記憶體。 此方法是並行安全的方法。

size_type capacity() const;

傳回值

並行向量可以成長而不必配置更多記憶體的大小上限。

備註

不同于 C++ 標準程式庫 vectorconcurrent_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;

傳回值

類型 iteratorconst_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_iteratorconst_reverse_iterator 並行向量開頭的反覆運算器。

rend

傳回類型 reverse_iterator 為 或 const_reverse_iterator 的反覆運算器至並行向量的結尾。 此方法是並行安全的方法。

reverse_iterator rend();

const_reverse_iterator rend() const;

傳回值

類型 reverse_iteratorconst_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 交換內容的物件。

另請參閱

concurrency 命名空間
平行容器和物件