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 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 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 _Vectorbersamaan .

Konstruktor keempat menentukan pemindahan vektor _Vectorbersamaan .

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

Namespace layanan konkurensi
Kontainer dan Objek Paralel