Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.