Kelas concurrent_vector
Kelas concurrent_vector
adalah kelas kontainer urutan yang memungkinkan akses acak ke elemen apa pun. Ini memungkinkan penambalan yang aman konkurensi, akses elemen, akses iterator, dan operasi traversal iterator. Di sini, konkurensi-aman berarti pointer atau iterator 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 alokasi memori untuk vektor bersamaan. Argumen ini bersifat opsional dan nilai defaultnya adalah allocator<T>
.
Anggota
Typedef Publik
Nama | Deskripsi |
---|---|
allocator_type |
Jenis yang mewakili kelas alokator untuk vektor bersamaan. |
const_iterator |
Jenis yang menyediakan iterator akses acak yang dapat membaca const elemen dalam vektor bersamaan. |
const_pointer |
Jenis yang menyediakan penunjuk ke const elemen dalam vektor bersamaan. |
const_reference |
Jenis yang menyediakan referensi ke elemen yang const disimpan dalam vektor bersamaan const untuk membaca dan melakukan operasi. |
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 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 yang menggunakan iterator tidak aman konkurensi. |
size_type |
Jenis yang menghitung jumlah elemen dalam vektor bersamaan. |
value_type |
Jenis yang mewakili jenis data yang disimpan dalam vektor bersamaan. |
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 vektor bersamaan dan menetapkan salinan _N nilai _Item , atau yang ditentukan oleh rentang iterator [ _Begin , _End ). Metode ini tidak aman konkurensi. |
at | Kelebihan beban. Menyediakan akses ke elemen pada indeks yang diberikan di vektor bersamaan. Metode ini aman konkurensi untuk operasi baca, dan juga saat menumbuhkan vektor, selama Anda telah memastikan bahwa nilainya _Index kurang dari ukuran vektor bersamaan. |
Kembali | Kelebihan beban. Mengembalikan referensi atau const referensi ke elemen terakhir dalam vektor bersamaan. Jika vektor bersamaan kosong, nilai pengembalian tidak ditentukan. Metode ini aman konkurensi. |
Mulai | Kelebihan beban. Mengembalikan iterator jenis iterator atau const_iterator ke awal vektor bersamaan. Metode ini aman konkurensi. |
kapasitas | Mengembalikan ukuran maksimum tempat vektor bersamaan dapat tumbuh tanpa harus mengalokasikan lebih banyak memori. Metode ini aman konkurensi. |
cbegin | Mengembalikan iterator jenis const_iterator ke awal vektor bersamaan. Metode ini aman konkurensi. |
cend | Mengembalikan iterator jenis const_iterator ke akhir vektor bersamaan. Metode ini aman konkurensi. |
hapus | 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 konkurensi. |
crend | Mengembalikan iterator jenis const_reverse_iterator ke akhir vektor bersamaan. Metode ini aman konkurensi. |
kosong | Menguji apakah vektor bersamaan kosong pada saat metode ini dipanggil. Metode ini aman konkurensi. |
akhir | Kelebihan beban. Mengembalikan iterator jenis iterator atau const_iterator ke akhir vektor bersamaan. Metode ini aman konkurensi. |
Depan | Kelebihan beban. Mengembalikan referensi atau const referensi ke elemen pertama dalam vektor bersamaan. Jika vektor bersamaan kosong, nilai pengembalian tidak ditentukan. Metode ini aman konkurensi. |
get_allocator | Mengembalikan salinan alokator yang digunakan untuk membangun vektor bersamaan. Metode ini aman konkurensi. |
grow_by | Kelebihan beban. Tumbuh vektor bersamaan ini berdasarkan _Delta elemen. Metode ini aman konkurensi. |
grow_to_at_least | Tumbuh vektor bersamaan ini sampai memiliki setidaknya _N elemen. Metode ini aman konkurensi. |
max_size | Mengembalikan jumlah maksimum elemen yang dapat ditahan vektor bersamaan. Metode ini aman konkurensi. |
push_back | Kelebihan beban. Menambahkan item yang diberikan ke akhir vektor bersamaan. Metode ini aman konkurensi. |
rbegin | Kelebihan beban. Mengembalikan iterator jenis reverse_iterator atau const_reverse_iterator ke awal vektor bersamaan. Metode ini aman konkurensi. |
rend | Kelebihan beban. Mengembalikan iterator jenis reverse_iterator atau const_reverse_iterator ke akhir vektor bersamaan. Metode ini aman konkurensi. |
Reserve | 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 konkurensi. |
tukar | Menukar isi dua vektor bersamaan. Metode ini tidak aman konkurensi. |
Operator Publik
Nama | Deskripsi |
---|---|
operator[] | Kelebihan beban. Menyediakan akses ke elemen pada indeks yang diberikan di vektor bersamaan. Metode ini aman konkurensi untuk operasi baca, dan juga saat menumbuhkan vektor, selama Anda telah memastikan bahwa nilainya _Index kurang dari ukuran vektor bersamaan. |
operator= | Kelebihan beban. Menetapkan isi objek lain concurrent_vector untuk objek ini. Metode ini tidak aman konkurensi. |
Keterangan
Untuk informasi terperinci tentang concurrent_vector
kelas, lihat Kontainer dan Objek Paralel.
Hierarki Warisan
_Concurrent_vector_base_v4
_Allocator_base
concurrent_vector
Persyaratan
Header: concurrent_vector.h
Namespace: konkurensi
assign
Menghapus elemen vektor bersamaan dan menetapkan salinan _N
nilai _Item
, atau 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 konkurensi. Anda harus memastikan bahwa tidak ada utas lain yang memanggil metode pada vektor bersamaan ketika Anda memanggil metode ini.
at
Menyediakan akses ke elemen pada indeks yang diberikan di vektor bersamaan. Metode ini aman konkurensi untuk operasi baca, dan juga saat menumbuhkan vektor, selama Anda telah memastikan bahwa nilainya _Index
kurang dari ukuran vektor bersamaan.
reference at(size_type _Index);
const_reference at(size_type _Index) const;
Parameter
_Index
Indeks elemen yang akan diambil.
Tampilkan Nilai
Referensi ke item pada indeks yang diberikan.
Keterangan
Versi fungsi at
yang mengembalikan non-referensi const
tidak dapat digunakan untuk menulis secara bersamaan 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 const
referensi ke elemen terakhir dalam vektor bersamaan. Jika vektor bersamaan kosong, nilai pengembalian tidak ditentukan. Metode ini aman konkurensi.
reference back();
const_reference back() const;
Tampilkan Nilai
Referensi atau const
referensi ke elemen terakhir di vektor bersamaan.
Mulai
Mengembalikan iterator jenis iterator
atau const_iterator
ke awal vektor bersamaan. Metode ini aman konkurensi.
iterator begin();
const_iterator begin() const;
Tampilkan Nilai
Iterator jenis iterator
atau const_iterator
ke awal vektor bersamaan.
kapasitas
Mengembalikan ukuran maksimum tempat vektor bersamaan dapat tumbuh tanpa harus mengalokasikan lebih banyak memori. Metode ini aman konkurensi.
size_type capacity() const;
Tampilkan Nilai
Ukuran maksimum tempat vektor bersamaan dapat tumbuh tanpa harus mengalokasikan lebih banyak memori.
Keterangan
Tidak seperti Pustaka vector
Standar 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 konkurensi.
const_iterator cbegin() const;
Tampilkan Nilai
Iterator jenis const_iterator
ke awal vektor bersamaan.
cend
Mengembalikan iterator jenis const_iterator
ke akhir vektor bersamaan. Metode ini aman konkurensi.
const_iterator cend() const;
Tampilkan Nilai
Iterator jenis const_iterator
ke akhir vektor bersamaan.
hapus
Menghapus semua elemen dalam vektor bersamaan. Metode ini tidak aman konkurensi.
void clear();
Keterangan
clear
tidak aman 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 iterator input.
_Al
Kelas alokator untuk digunakan dengan objek ini.
_Vektor
Objek sumber concurrent_vector
untuk menyalin atau memindahkan elemen.
_N
Kapasitas concurrent_vector
awal 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 vektor _Vector
bersamaan .
Konstruktor keempat menentukan pemindahan vektor _Vector
bersamaan .
Konstruktor kelima menentukan pengulangan angka yang ditentukan ( _N
) elemen dari nilai default untuk kelas T
.
Konstruktor keenam menentukan pengulangan ( _N
) elemen 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 konkurensi.
const_reverse_iterator crbegin() const;
Tampilkan Nilai
Iterator jenis const_reverse_iterator
ke awal vektor bersamaan.
crend
Mengembalikan iterator jenis const_reverse_iterator
ke akhir vektor bersamaan. Metode ini aman 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 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 konkurensi.
iterator end();
const_iterator end() const;
Tampilkan Nilai
Iterator jenis iterator
atau const_iterator
ke akhir vektor bersamaan.
Depan
Mengembalikan referensi atau const
referensi ke elemen pertama dalam vektor bersamaan. Jika vektor bersamaan kosong, nilai pengembalian tidak ditentukan. Metode ini aman konkurensi.
reference front();
const_reference front() const;
Tampilkan Nilai
Referensi atau const
referensi ke elemen pertama dalam vektor bersamaan.
get_allocator
Mengembalikan salinan alokator yang digunakan untuk membangun vektor bersamaan. Metode ini aman konkurensi.
allocator_type get_allocator() const;
Tampilkan Nilai
Salinan alokator yang digunakan untuk membuat concurrent_vector
objek.
grow_by
Tumbuh vektor bersamaan ini berdasarkan _Delta
elemen. Metode ini aman 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.
grow_to_at_least
Tumbuh vektor bersamaan ini sampai memiliki setidaknya _N
elemen. Metode ini aman 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.
max_size
Mengembalikan jumlah maksimum elemen yang dapat ditahan vektor bersamaan. Metode ini aman konkurensi.
size_type max_size() const;
Tampilkan Nilai
Jumlah maksimum elemen yang dapat ditahan concurrent_vector
objek.
operator=
Menetapkan isi objek lain concurrent_vector
untuk 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[]
Menyediakan akses ke elemen pada indeks yang diberikan di vektor bersamaan. Metode ini aman konkurensi untuk operasi baca, dan juga saat menumbuhkan vektor, selama Anda telah memastikan bahwa nilainya _Index
kurang dari ukuran vektor bersamaan.
reference operator[](size_type _index);
const_reference operator[](size_type _index) const;
Parameter
_Index
Indeks elemen yang akan diambil.
Tampilkan Nilai
Referensi ke item pada indeks yang diberikan.
Keterangan
Versi operator []
yang mengembalikan non-referensi const
tidak dapat digunakan untuk menulis secara bersamaan ke elemen dari utas yang berbeda. Objek sinkronisasi yang berbeda harus digunakan untuk menyinkronkan operasi baca dan tulis bersamaan ke elemen data yang sama.
Tidak ada pemeriksaan batas yang dilakukan untuk memastikan bahwa itu adalah indeks yang _Index
valid ke vektor bersamaan.
push_back
Menambahkan item yang diberikan ke akhir vektor bersamaan. Metode ini aman konkurensi.
iterator push_back(const_reference _Item);
iterator push_back(T&& _Item);
Parameter
_Item
Nilai yang akan ditambahkan.
Tampilkan Nilai
Iterator untuk item ditambahkan.
rbegin
Mengembalikan iterator jenis reverse_iterator
atau const_reverse_iterator
ke awal vektor bersamaan. Metode ini aman konkurensi.
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
Tampilkan Nilai
Iterator jenis reverse_iterator
atau const_reverse_iterator
ke awal vektor bersamaan.
rend
Mengembalikan iterator jenis reverse_iterator
atau const_reverse_iterator
ke akhir vektor bersamaan. Metode ini aman konkurensi.
reverse_iterator rend();
const_reverse_iterator rend() const;
Tampilkan Nilai
Iterator jenis reverse_iterator
atau const_reverse_iterator
ke akhir vektor bersamaan.
Reserve
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 konkurensi. Anda harus memastikan bahwa tidak ada utas lain yang memanggil metode pada vektor bersamaan ketika Anda memanggil metode ini. Kapasitas vektor bersamaan setelah metode kembali mungkin lebih besar dari reservasi yang diminta.
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 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 konkurensi. Anda harus memastikan bahwa tidak ada utas lain yang memanggil metode pada vektor bersamaan ketika Anda memanggil metode ini.
shrink_to_fit
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 elemen pemindahan memori secara internal, membatalkan semua iterator. shrink_to_fit
tidak aman konkurensi. Anda harus memastikan bahwa tidak ada utas lain yang memanggil metode pada vektor bersamaan saat Anda memanggil fungsi ini.
size
Mengembalikan jumlah elemen dalam vektor bersamaan. Metode ini aman konkurensi.
size_type size() const;
Tampilkan Nilai
Jumlah elemen dalam objek ini concurrent_vector
.
Keterangan
Ukuran yang dikembalikan dijamin untuk menyertakan semua elemen yang ditambahkan oleh panggilan ke fungsi push_back
, atau menumbuhkan operasi yang telah selesai sebelum memanggil metode ini. Namun, ini juga dapat mencakup elemen yang dialokasikan tetapi masih dalam pembangunan dengan panggilan bersamaan ke salah satu metode pertumbuhan.
pertukaran
Menukar isi dua vektor bersamaan. Metode ini tidak aman konkurensi.
void swap(concurrent_vector& _Vector);
Parameter
_Vektor
Objek concurrent_vector
untuk menukar konten dengan.
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk