Kelas concurrent_vector

Kelas concurrent_vector adalah kelas kontainer urutan yang memungkinkan akses acak ke elemen apa pun. Ini memungkinkan penambahan yang aman konkuren, akses elemen, akses iterator, dan operasi penelusuran iterator. Di sini, aman secara konkurensi berarti penunjuk atau pengulang selalu valid. Ini bukan jaminan inisialisasi elemen, atau urutan traversal tertentu.

Sintaks

template<typename T, class _Ax>
class concurrent_vector: protected details::_Allocator_base<T,
    _Ax>,
private details::_Concurrent_vector_base_v4;

Parameter

T
Jenis data elemen yang akan disimpan di vektor.

_Ax
Jenis yang mewakili objek alokator tersimpan yang merangkum detail tentang alokasi dan dealokasi memori untuk vektor konkuren. Argumen ini bersifat opsional dan nilai defaultnya adalah allocator<T>.

Anggota

Typedef Publik

Nama Deskripsi
allocator_type Jenis yang mewakili kelas alokator untuk vektor konkuren.
const_iterator Jenis yang menyediakan iterator akses acak yang dapat membaca const elemen dalam vektor bersamaan.
const_pointer Jenis yang menyediakan penunjuk ke elemen const dalam vektor konkuren.
const_reference Jenis yang menyediakan referensi ke const elemen yang disimpan dalam vektor bersamaan untuk pembacaan dan pelaksanaan operasi const.
const_reverse_iterator Jenis yang menyediakan iterator akses acak yang dapat membaca elemen apa pun const di vektor bersamaan.
difference_type Jenis yang menyediakan jarak yang ditandatangani antara dua elemen dalam vektor bersamaan.
iterator Jenis yang menyediakan iterator akses acak yang dapat membaca elemen apa pun dalam vektor bersamaan. Modifikasi elemen yang menggunakan iterator tidak aman terhadap konkurensi.
pointer Jenis yang menyediakan penunjuk ke elemen dalam vektor bersamaan.
reference Jenis yang menyediakan referensi ke elemen yang disimpan dalam vektor bersamaan.
reverse_iterator Jenis yang menyediakan iterator akses acak yang dapat membaca elemen apa pun dalam vektor bersamaan terbalik. Modifikasi elemen menggunakan iterator tidak aman untuk penggunaan bersamaan.
size_type Jenis yang menghitung jumlah elemen dalam vektor bersamaan.
value_type Jenis yang mewakili jenis data yang disimpan dalam vektor konkuren.

Konstruktor Publik

Nama Deskripsi
concurrent_vector Kelebihan beban. Membangun vektor bersamaan.
~concurrent_vector Destructor Menghapus semua elemen dan menghancurkan vektor bersamaan ini.

Metode Publik

Nama Deskripsi
Menetapkan Kelebihan beban. Menghapus elemen-elemen dari vektor bersamaan dan menetapkannya dengan salinan _N dari _Item, atau nilai-nilai yang ditentukan oleh rentang iterator [ _Begin, _End). Metode ini tidak aman konkurensi.
di Kelebihan beban. Memberikan akses ke elemen pada indeks yang ditentukan dalam vektor bersamaan. Metode ini aman untuk keserentakan dalam operasi baca, dan juga saat memperpanjang vektor, selama Anda telah memastikan bahwa nilainya _Index kurang dari ukurannya vektor konkuren.
kembali Kelebihan beban. Mengembalikan referensi atau referensi const ke elemen terakhir dalam vektor bersamaan. Jika vektor bersamaan kosong, nilai pengembalian tidak ditentukan. Metode ini aman terhadap konkurensi.
mulai Kelebihan beban. Mengembalikan iterator jenis iterator atau const_iterator ke awal vektor bersamaan. Metode ini aman terhadap konkurensi.
kapasitas Mengembalikan ukuran maksimum tempat vektor bersamaan dapat tumbuh tanpa harus mengalokasikan lebih banyak memori. Metode ini aman terhadap konkurensi.
cbegin Mengembalikan iterator jenis const_iterator ke awal vektor bersamaan. Metode ini aman terhadap konkurensi.
cend Mengembalikan iterator jenis const_iterator ke akhir vektor bersamaan. Metode ini aman terhadap konkurensi.
bersihkan Menghapus semua elemen dalam vektor bersamaan. Metode ini tidak aman konkurensi.
crbegin Mengembalikan iterator jenis const_reverse_iterator ke awal vektor bersamaan. Metode ini aman terhadap konkurensi.
crend Mengembalikan iterator jenis const_reverse_iterator ke akhir vektor bersamaan. Metode ini aman terhadap konkurensi.
kosong Menguji apakah vektor bersamaan kosong pada saat metode ini dipanggil. Metode ini aman terhadap konkurensi.
akhir Kelebihan beban. Mengembalikan iterator jenis iterator atau const_iterator ke akhir vektor bersamaan. Metode ini aman terhadap konkurensi.
depan Kelebihan beban. Mengembalikan referensi atau const referensi ke elemen pertama dalam vektor konkuren. Jika vektor bersamaan kosong, nilai pengembalian tidak ditentukan. Metode ini aman terhadap konkurensi.
get_allocator Mengembalikan salinan alokator yang digunakan untuk membangun vektor konkuren. Metode ini aman terhadap konkurensi.
grow_by Kelebihan beban. Memperluas vektor konkuren ini dengan _Delta elemen. Metode ini aman terhadap konkurensi.
bertumbuh_setidaknya_hingga Mengembangkan vektor serentak ini hingga memiliki setidaknya _N elemen. Metode ini aman terhadap konkurensi.
max_size Mengembalikan jumlah maksimum elemen yang dapat ditahan vektor bersamaan. Metode ini aman terhadap konkurensi.
push_back Kelebihan beban. Menambahkan item yang diberikan ke akhir vektor konkuren. Metode ini aman terhadap konkurensi.
rbegin Kelebihan beban. Mengembalikan iterator jenis reverse_iterator atau const_reverse_iterator ke awal vektor bersamaan. Metode ini aman terhadap konkurensi.
render Kelebihan beban. Mengembalikan iterator jenis reverse_iterator atau const_reverse_iterator ke akhir vektor bersamaan. Metode ini aman terhadap konkurensi.
cadangan Mengalokasikan ruang yang cukup untuk menumbuhkan vektor bersamaan ke ukuran _N tanpa harus mengalokasikan lebih banyak memori nanti. Metode ini tidak aman konkurensi.
Mengubah ukuran Kelebihan beban. Mengubah ukuran vektor bersamaan ke ukuran yang diminta, menghapus, atau menambahkan elemen seperlunya. Metode ini tidak aman konkurensi.
shrink_to_fit Memampatkan representasi internal vektor bersamaan untuk mengurangi fragmentasi dan mengoptimalkan penggunaan memori. Metode ini tidak aman konkurensi.
ukuran Mengembalikan jumlah elemen dalam vektor bersamaan. Metode ini aman terhadap konkurensi.
ganti Menukar isi dua vektor bersamaan. Metode ini tidak aman konkurensi.

Operator Publik

Nama Deskripsi
operator[] Kelebihan beban. Memberikan akses ke elemen pada indeks yang ditentukan dalam vektor bersamaan. Metode ini aman untuk operasi baca secara bersamaan, dan juga saat memperbesar vektor, dengan memastikan bahwa nilai _Index kurang dari ukuran vektor konkuren.
operator= Kelebihan beban. Menetapkan isi dari objek concurrent_vector lain ke objek ini. Metode ini tidak aman konkurensi.

Keterangan

Untuk informasi terperinci tentang kelas concurrent_vector, lihat Paralel Kontainer dan Objek.

Hierarki Pewarisan

_Concurrent_vector_base_v4

_Allocator_base

concurrent_vector

Persyaratan

Header: concurrent_vector.h

Namespace: konkurensi

tetapkan

Menghapus elemen-elemen dari vektor bersamaan dan menetapkannya dengan salinan _N dari _Item, atau nilai-nilai yang ditentukan oleh rentang iterator [ _Begin, _End). Metode ini tidak aman konkurensi.

void assign(
    size_type _N,
    const_reference _Item);

template<class _InputIterator>
void assign(_InputIterator _Begin,
    _InputIterator _End);

Parameter

_InputIterator
Jenis iterator yang ditentukan.

_N
Jumlah item yang akan disalin ke vektor bersamaan.

_Item
Referensi ke nilai yang digunakan untuk mengisi vektor bersamaan.

_Mulai
Iterator ke elemen pertama dari rentang sumber.

_Akhir
Iterator ke satu melewati elemen terakhir dari rentang sumber.

Keterangan

assign tidak aman untuk konkurensi. Anda harus memastikan bahwa tidak ada utas lain yang memanggil metode pada vektor bersamaan ketika Anda memanggil metode ini.

di

Memberikan akses ke elemen pada indeks yang ditentukan dalam vektor bersamaan. Metode ini aman untuk keserentakan dalam operasi baca, dan juga saat memperpanjang vektor, selama Anda telah memastikan bahwa nilainya _Index kurang dari ukurannya vektor konkuren.

reference at(size_type _Index);

const_reference at(size_type _Index) const;

Parameter

_Indeks
Indeks elemen yang ingin diperoleh.

Tampilkan Nilai

Referensi ke item pada indeks yang diberikan.

Keterangan

Versi fungsi at yang mengembalikan referensi bukan-const tidak dapat digunakan untuk menulis serempak ke elemen dari utas yang berbeda. Objek sinkronisasi yang berbeda harus digunakan untuk menyinkronkan operasi baca dan tulis bersamaan ke elemen data yang sama.

Metode ini melemparkan out_of_range jika _Index lebih besar dari atau sama dengan ukuran vektor bersamaan, dan range_error jika indeks adalah untuk bagian vektor yang rusak. Untuk detail tentang bagaimana vektor dapat menjadi rusak, lihat Kontainer dan Objek Paralel.

kembali

Mengembalikan referensi atau referensi const ke elemen terakhir dalam vektor bersamaan. Jika vektor bersamaan kosong, nilai pengembalian tidak ditentukan. Metode ini aman terhadap konkurensi.

reference back();

const_reference back() const;

Tampilkan Nilai

Referensi atau const referensi ke elemen terakhir di vektor konkuren.

mulai

Mengembalikan iterator jenis iterator atau const_iterator ke awal vektor bersamaan. Metode ini aman terhadap konkurensi.

iterator begin();

const_iterator begin() const;

Tampilkan Nilai

Iterator tipe iterator atau const_iterator menuju awal vektor konkuren.

kapasitas

Mengembalikan ukuran maksimum tempat vektor bersamaan dapat tumbuh tanpa harus mengalokasikan lebih banyak memori. Metode ini aman terhadap konkurensi.

size_type capacity() const;

Tampilkan Nilai

Ukuran maksimum tempat vektor bersamaan dapat tumbuh tanpa harus mengalokasikan lebih banyak memori.

Keterangan

Tidak seperti Pustaka vectorStandar C++, concurrent_vector objek tidak memindahkan elemen yang ada jika mengalokasikan lebih banyak memori.

cbegin

Mengembalikan iterator jenis const_iterator ke awal vektor bersamaan. Metode ini aman terhadap konkurensi.

const_iterator cbegin() const;

Tampilkan Nilai

Iterator tipe const_iterator ke awal vektor bersamaan.

cend

Mengembalikan iterator jenis const_iterator ke akhir vektor bersamaan. Metode ini aman terhadap konkurensi.

const_iterator cend() const;

Tampilkan Nilai

Iterator tipe const_iterator ke akhir vektor simultan.

bersihkan

Menghapus semua elemen dalam vektor bersamaan. Metode ini tidak aman konkurensi.

void clear();

Keterangan

clear tidak aman untuk konkurensi. Anda harus memastikan bahwa tidak ada utas lain yang memanggil metode pada vektor bersamaan ketika Anda memanggil metode ini. clear tidak membebaskan array internal. Untuk membebaskan array internal, panggil fungsi shrink_to_fit setelah clear.

concurrent_vector

Membangun vektor bersamaan.

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());

Parameter

M
Jenis alokator vektor sumber.

_InputIterator
Jenis dari iterator input.

_Al
Kelas alokator yang akan digunakan dengan objek ini.

_Vektor
Objek sumber concurrent_vector untuk menyalin atau memindahkan elemen.

_N
Kapasitas awal concurrent_vector objek.

_Item
Nilai elemen dalam objek yang dibangun.

_Mulai
Posisi elemen pertama dalam rentang elemen yang akan disalin.

_Akhir
Posisi elemen pertama di luar rentang elemen yang akan disalin.

Keterangan

Semua konstruktor menyimpan objek _Al alokator dan menginisialisasi vektor.

Konstruktor pertama menentukan vektor awal kosong dan secara eksplisit menentukan jenis alokator. yang akan digunakan.

Konstruktor kedua dan ketiga menentukan salinan dari vektor bersamaan _Vector.

Konstruktor keempat menentukan pemindahan vektor konkuren _Vector.

Konstruktor kelima menentukan pengulangan jumlah (_N) elemen tertentu dari nilai default untuk kelas T.

Konstruktor keenam menentukan pengulangan elemen _N dengan nilai _Item.

Konstruktor terakhir menentukan nilai yang disediakan oleh rentang iterator [ _Begin, _End).

~concurrent_vector

Menghapus semua elemen dan menghancurkan vektor bersamaan ini.

~concurrent_vector();

crbegin

Mengembalikan iterator jenis const_reverse_iterator ke awal vektor bersamaan. Metode ini aman terhadap konkurensi.

const_reverse_iterator crbegin() const;

Tampilkan Nilai

Iterator tipe const_reverse_iterator ke awal vektor bersamaan.

crend

Mengembalikan iterator jenis const_reverse_iterator ke akhir vektor bersamaan. Metode ini aman terhadap konkurensi.

const_reverse_iterator crend() const;

Tampilkan Nilai

Iterator jenis const_reverse_iterator ke akhir vektor bersamaan.

kosong

Menguji apakah vektor bersamaan kosong pada saat metode ini dipanggil. Metode ini aman terhadap konkurensi.

bool empty() const;

Tampilkan Nilai

true jika vektor kosong saat fungsi dipanggil, false jika tidak.

akhir

Mengembalikan iterator jenis iterator atau const_iterator ke akhir vektor bersamaan. Metode ini aman terhadap konkurensi.

iterator end();

const_iterator end() const;

Tampilkan Nilai

Iterator dari jenis iterator atau const_iterator ke akhir vektor konkuren.

depan

Mengembalikan referensi atau const referensi ke elemen pertama dalam vektor konkuren. Jika vektor bersamaan kosong, nilai pengembalian tidak ditentukan. Metode ini aman terhadap konkurensi.

reference front();

const_reference front() const;

Tampilkan Nilai

Referensi atau const referensi ke elemen pertama dalam vektor konkuren.

get_allocator

Mengembalikan salinan alokator yang digunakan untuk membangun vektor konkuren. Metode ini aman terhadap konkurensi.

allocator_type get_allocator() const;

Tampilkan Nilai

Salinan alokator yang digunakan untuk membuat objek concurrent_vector.

grow_by

Memperluas vektor konkuren ini dengan _Delta elemen. Metode ini aman terhadap konkurensi.

iterator grow_by(
    size_type _Delta);

iterator grow_by(
    size_type _Delta,
    const_reference _Item);

Parameter

_Delta
Jumlah elemen yang akan ditambahkan ke objek.

_Item
Nilai untuk menginisialisasi elemen baru dengan.

Tampilkan Nilai

Iterator untuk item pertama ditambahkan.

Keterangan

Jika _Item tidak ditentukan, elemen baru dibuat secara default.

tumbuhkan_ke_setidaknya

Mengembangkan vektor serentak ini hingga memiliki setidaknya _N elemen. Metode ini aman terhadap konkurensi.

iterator grow_to_at_least(size_type _N);

Parameter

_N
Ukuran minimum baru untuk concurrent_vector objek.

Tampilkan Nilai

Iterator yang menunjuk ke awal urutan yang ditambahkan, atau ke elemen pada indeks _N jika tidak ada elemen yang ditambahkan.

ukuran_maksimum

Mengembalikan jumlah maksimum elemen yang dapat ditahan vektor bersamaan. Metode ini aman terhadap konkurensi.

size_type max_size() const;

Tampilkan Nilai

Jumlah maksimum elemen yang dapat ditahan concurrent_vector objek.

operator=

Menetapkan isi dari objek concurrent_vector lain ke objek ini. Metode ini tidak aman konkurensi.

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);

Parameter

M
Jenis alokator vektor sumber.

_Vektor
Objek sumber concurrent_vector .

Tampilkan Nilai

Referensi ke objek ini concurrent_vector .

operator[]

Memberikan akses ke elemen pada indeks yang ditentukan dalam vektor bersamaan. Metode ini aman untuk operasi baca secara bersamaan, dan juga saat memperbesar vektor, dengan memastikan bahwa nilai _Index kurang dari ukuran vektor konkuren.

reference operator[](size_type _index);

const_reference operator[](size_type _index) const;

Parameter

_Indeks
Indeks elemen yang ingin diperoleh.

Tampilkan Nilai

Referensi ke item pada indeks yang diberikan.

Keterangan

Versi operator [] yang mengembalikan referensi bukan const tidak dapat digunakan untuk menulis ke elemen dari utas yang berbeda secara bersamaan. Objek sinkronisasi yang berbeda harus digunakan untuk menyinkronkan operasi baca dan tulis bersamaan ke elemen data yang sama.

Tidak ada pemeriksaan batasan yang dilakukan untuk memastikan bahwa _Index adalah indeks yang valid ke vektor bersamaan.

push_back

Menambahkan item yang diberikan ke akhir vektor konkuren. Metode ini aman terhadap konkurensi.

iterator push_back(const_reference _Item);

iterator push_back(T&& _Item);

Parameter

_Item
Nilai yang akan ditambahkan.

Tampilkan Nilai

Sebuah iterator untuk item yang telah ditambahkan.

rbegin

Mengembalikan iterator jenis reverse_iterator atau const_reverse_iterator ke awal vektor bersamaan. Metode ini aman terhadap konkurensi.

reverse_iterator rbegin();

const_reverse_iterator rbegin() const;

Tampilkan Nilai

Iterator tipe reverse_iterator atau const_reverse_iterator menuju awal vektor konkuren.

rend

Mengembalikan iterator jenis reverse_iterator atau const_reverse_iterator ke akhir vektor bersamaan. Metode ini aman terhadap konkurensi.

reverse_iterator rend();

const_reverse_iterator rend() const;

Tampilkan Nilai

Iterator dari jenis reverse_iterator atau const_reverse_iterator ke akhir vektor konkuren.

cadangan

Mengalokasikan ruang yang cukup untuk menumbuhkan vektor bersamaan ke ukuran _N tanpa harus mengalokasikan lebih banyak memori nanti. Metode ini tidak aman konkurensi.

void reserve(size_type _N);

Parameter

_N
Jumlah elemen yang akan dicadangkan ruangnya.

Keterangan

reserve tidak aman untuk konkurensi. Anda harus memastikan bahwa tidak ada utas lain yang memanggil metode pada vektor bersamaan ketika Anda memanggil metode ini. Kapasitas vektor serentak setelah metode selesai dijalankan mungkin lebih besar dari permintaan reservasi.

ubah ukuran

Mengubah ukuran vektor bersamaan ke ukuran yang diminta, menghapus, atau menambahkan elemen seperlunya. Metode ini tidak aman konkurensi.

void resize(
    size_type _N);

void resize(
    size_type _N,
    const T& val);

Parameter

_N
Ukuran baru dari concurrent_vector.

Val
Nilai elemen baru ditambahkan ke vektor jika ukuran baru lebih besar dari ukuran aslinya. Jika nilai dihilangkan, objek baru diberi nilai default untuk jenisnya.

Keterangan

Jika ukuran kontainer kurang dari ukuran yang diminta, elemen ditambahkan ke vektor hingga mencapai ukuran yang diminta. Jika ukuran kontainer lebih besar dari ukuran yang diminta, elemen yang paling dekat dengan akhir kontainer dihapus sampai kontainer mencapai ukuran _N. Jika ukuran kontainer saat ini sama dengan ukuran yang diminta, tidak ada tindakan yang diambil.

resize tidak aman untuk konkurensi. Anda harus memastikan bahwa tidak ada utas lain yang memanggil metode pada vektor bersamaan ketika Anda memanggil metode ini.

sesuaikan_ukuran

Memampatkan representasi internal vektor bersamaan untuk mengurangi fragmentasi dan mengoptimalkan penggunaan memori. Metode ini tidak aman konkurensi.

void shrink_to_fit();

Keterangan

Metode ini akan mengalokasikan ulang memori dan memindahkan elemen secara internal, membatalkan semua iterator. shrink_to_fit tidak aman untuk konkurensi. Anda harus memastikan bahwa tidak ada utas lain yang memanggil metode pada vektor bersamaan saat Anda memanggil fungsi ini.

ukuran

Mengembalikan jumlah elemen dalam vektor bersamaan. Metode ini aman terhadap konkurensi.

size_type size() const;

Tampilkan Nilai

Jumlah elemen dalam objek ini concurrent_vector .

Keterangan

Ukuran yang dikembalikan dijamin mencakup semua elemen yang ditambahkan oleh panggilan ke fungsi push_back, atau operasi peningkatan yang telah selesai sebelum metode ini dipanggil. Namun, ini juga dapat mencakup elemen yang dialokasikan tetapi masih dalam proses pengerjaan melalui panggilan bersamaan ke salah satu metode pertumbuhan.

tukar

Menukar isi dua vektor bersamaan. Metode ini tidak aman konkurensi.

void swap(concurrent_vector& _Vector);

Parameter

_Vektor
Objek concurrent_vector untuk menukar konten dengan.

Lihat juga

Namespace layanan konkurensi
Kontainer dan Objek Paralel