Kelas concurrent_unordered_map
Kelas concurrent_unordered_map
adalah kontainer konkurensi-aman yang mengontrol urutan panjang yang bervariasi dari elemen jenis std::pair<const K, _Element_type>
. Urutan diwakili dengan cara yang memungkinkan penambalan 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 K,
typename _Element_type,
typename _Hasher = std::hash<K>,
typename key_equality = std::equal_to<K>,
typename _Allocator_type = std::allocator<std::pair<const K,
_Element_type>>
>,
typename key_equality = std::equal_to<K>,
typename _Allocator_type = std::allocator<std::pair<const K,
_Element_type>>> class concurrent_unordered_map : public details::_Concurrent_hash<details::_Concurrent_unordered_map_traits<K,
_Element_type,
details::_Hash_compare<K,
_Hasher,
key_equality>,
_Allocator_type,
false>>;
Parameter
K
Jenis kunci.
_Element_type
Jenis yang dipetakan.
_Hasher
Jenis objek fungsi hash. Argumen ini bersifat opsional dan nilai defaultnya adalah std::hash<K>
.
key_equality
Jenis objek fungsi perbandingan kesetaraan. Argumen ini bersifat opsional dan nilai defaultnya adalah std::equal_to<K>
.
_Allocator_type
Jenis yang mewakili objek alokator tersimpan yang merangkum detail tentang alokasi dan pembatalan alokasi memori untuk peta bersamaan yang tidak diurutkan. Argumen ini bersifat opsional dan nilai defaultnya adalah std::allocator<std::pair<K
, _Element_type>>
.
Anggota
Typedef Publik
Nama | Deskripsi |
---|---|
allocator_type |
Jenis alokator untuk mengelola penyimpanan. |
const_iterator |
Jenis iterator konstan untuk urutan terkontrol. |
const_local_iterator |
Jenis iterator wadah konstan untuk urutan yang dikontrol. |
const_pointer |
Jenis penunjuk konstan ke elemen. |
const_reference |
Jenis referensi konstanta ke elemen. |
difference_type |
Jenis jarak yang ditandatangani antara dua elemen. |
hasher |
Jenis fungsi hash. |
iterator |
Jenis iterator untuk urutan yang dikontrol. |
key_equal |
Jenis fungsi perbandingan. |
key_type |
Jenis kunci pemesanan. |
local_iterator |
Jenis iterator wadah untuk urutan yang dikontrol. |
mapped_type |
Jenis nilai yang dipetakan yang terkait dengan setiap kunci. |
pointer |
Jenis penunjuk ke elemen. |
reference |
Jenis referensi ke elemen. |
size_type |
Jenis jarak yang tidak ditandatangani antara dua elemen. |
value_type |
Jenis elemen. |
Konstruktor Publik
Nama | Deskripsi |
---|---|
concurrent_unordered_map | Kelebihan beban. Membuat peta yang tidak berurut secara bersamaan. |
Metode Publik
Nama | Deskripsi |
---|---|
at | Kelebihan beban. Menemukan elemen dalam concurrent_unordered_map dengan nilai kunci tertentu.. Metode ini aman konkurensi. |
hash_function | Mendapatkan objek fungsi hash yang disimpan. |
Memasukkan | Kelebihan beban. Menambahkan elemen ke concurrent_unordered_map objek. |
key_eq | Mendapatkan objek fungsi perbandingan kesetaraan tersimpan. |
tukar | Menukar isi dua concurrent_unordered_map objek. Metode ini tidak aman konkurensi. |
unsafe_erase | Kelebihan beban. Menghapus elemen dari concurrent_unordered_map pada posisi yang ditentukan. Metode ini tidak aman konkurensi. |
Operator Publik
Nama | Deskripsi |
---|---|
operator[] | Kelebihan beban. Menemukan atau menyisipkan elemen dengan kunci yang ditentukan. Metode ini aman konkurensi. |
operator= | Kelebihan beban. Menetapkan isi objek lain concurrent_unordered_map untuk objek ini. Metode ini tidak aman konkurensi. |
Keterangan
Untuk informasi terperinci tentang concurrent_unordered_map
kelas, lihat Kontainer dan Objek Paralel.
Hierarki Warisan
_Traits
_Concurrent_hash
concurrent_unordered_map
Persyaratan
Header: concurrent_unordered_map.h
Namespace: konkurensi
at
Menemukan elemen dalam concurrent_unordered_map
dengan nilai kunci tertentu.. Metode ini aman konkurensi.
mapped_type& at(const key_type& KVal);
const mapped_type& at(const key_type& KVal) const;
Parameter
KVal
Nilai kunci yang akan ditemukan.
Tampilkan Nilai
Referensi ke nilai data elemen yang ditemukan.
Keterangan
Jika nilai kunci argumen tidak ditemukan, fungsi akan melemparkan objek kelas out_of_range
.
Mulai
Mengembalikan iterator yang menunjuk ke elemen pertama dalam kontainer bersamaan. Metode ini aman konkurensi.
iterator begin();
const_iterator begin() const;
Tampilkan Nilai
Iterator ke elemen pertama dalam kontainer bersamaan.
cbegin
Mengembalikan iterator const yang menunjuk ke elemen pertama dalam kontainer bersamaan. Metode ini aman konkurensi.
const_iterator cbegin() const;
Tampilkan Nilai
Iterator const ke elemen pertama dalam kontainer bersamaan.
cend
Mengembalikan iterator const yang menunjuk ke lokasi yang menggantikan elemen terakhir dalam kontainer bersamaan. Metode ini aman konkurensi.
const_iterator cend() const;
Tampilkan Nilai
Iterator const ke lokasi yang menggantikan elemen terakhir dalam kontainer bersamaan.
hapus
Menghapus semua elemen dalam kontainer bersamaan. Fungsi ini tidak aman konkurensi.
void clear();
concurrent_unordered_map
Membuat peta yang tidak berurut secara bersamaan.
explicit concurrent_unordered_map(
size_type _Number_of_buckets = 8,
const hasher& _Hasher = hasher(),
const key_equal& key_equality = key_equal(),
const allocator_type& _Allocator = allocator_type());
concurrent_unordered_map(
const allocator_type& _Allocator);
template <typename _Iterator>
concurrent_unordered_map(_Iterator _Begin,
_Iterator _End,
size_type _Number_of_buckets = 8,
const hasher& _Hasher = hasher(),
const key_equal& key_equality = key_equal(),
const allocator_type& _Allocator = allocator_type());
concurrent_unordered_map(
const concurrent_unordered_map& _Umap);
concurrent_unordered_map(
const concurrent_unordered_map& _Umap,
const allocator_type& _Allocator);
concurrent_unordered_map(
concurrent_unordered_map&& _Umap);
Parameter
_Iterator
Jenis iterator input.
_Number_of_buckets
Jumlah awal wadah untuk peta yang tidak diurutkan ini.
_Hasher
Fungsi hash untuk peta yang tidak diurutkan ini.
key_equality
Fungsi perbandingan kesetaraan untuk peta yang tidak diurutkan ini.
_Pengalokasi
Alokator untuk peta yang tidak diurutkan ini.
_Mulai
Posisi elemen pertama dalam rentang elemen yang akan disalin.
_Akhir
Posisi elemen pertama di luar rentang elemen yang akan disalin.
_Umap
Objek sumber concurrent_unordered_map
untuk menyalin atau memindahkan elemen.
Keterangan
Semua konstruktor menyimpan objek _Allocator
alokator dan menginisialisasi peta yang tidak diurutkan.
Konstruktor pertama menentukan peta awal kosong dan secara eksplisit menentukan jumlah wadah, fungsi hash, fungsi kesetaraan, dan jenis alokator yang akan digunakan.
Konstruktor kedua menentukan alokator untuk peta yang tidak diurutkan.
Konstruktor ketiga menentukan nilai yang disediakan oleh rentang iterator [ _Begin
, _End
).
Konstruktor keempat dan kelima menentukan salinan peta _Umap
yang tidak terurut bersamaan .
Konstruktor terakhir menentukan pemindahan peta _Umap
bersamaan yang tidak diurutkan .
jumlah
Menghitung jumlah elemen yang cocok dengan kunci tertentu. Fungsi ini aman konkurensi.
size_type count(const key_type& KVal) const;
Parameter
KVal
Kunci untuk dicari.
Tampilkan Nilai
Berapa kali kunci muncul dalam kontainer.
kosong
Menguji apakah tidak ada elemen yang ada. Metode ini aman konkurensi.
bool empty() const;
Tampilkan Nilai
true
jika kontainer bersamaan kosong, false
jika tidak.
Keterangan
Di hadapan sisipan bersamaan, apakah kontainer bersamaan kosong atau tidak dapat berubah segera setelah memanggil fungsi ini, sebelum nilai pengembalian bahkan dibaca.
akhir
Mengembalikan iterator yang menunjuk ke lokasi yang menggantikan elemen terakhir dalam kontainer bersamaan. Metode ini aman konkurensi.
iterator end();
const_iterator end() const;
Tampilkan Nilai
Iterator ke lokasi yang menggantikan elemen terakhir dalam kontainer bersamaan.
equal_range
Menemukan rentang yang cocok dengan kunci tertentu. Fungsi ini aman konkurensi.
std::pair<iterator,
iterator> equal_range(
const key_type& KVal);
std::pair<const_iterator,
const_iterator> equal_range(
const key_type& KVal) const;
Parameter
KVal
Nilai kunci yang akan dicari.
Tampilkan Nilai
Pasangan di mana elemen pertama adalah iterator ke awal dan elemen kedua adalah iterator ke akhir rentang.
Keterangan
Dimungkinkan untuk sisipan bersamaan untuk menyebabkan kunci tambahan dimasukkan setelah iterator mulai dan sebelum iterator akhir.
cari
Menemukan elemen yang cocok dengan kunci tertentu. Fungsi ini aman konkurensi.
iterator find(const key_type& KVal);
const_iterator find(const key_type& KVal) const;
Parameter
KVal
Nilai kunci yang akan dicari.
Tampilkan Nilai
Iterator yang menunjuk ke lokasi elemen pertama yang cocok dengan kunci yang disediakan, atau iterator end()
jika tidak ada elemen tersebut.
get_allocator
Mengembalikan objek alokator tersimpan untuk kontainer bersamaan ini. Metode ini aman konkurensi.
allocator_type get_allocator() const;
Tampilkan Nilai
Objek alokator tersimpan untuk kontainer bersamaan ini.
hash_function
Mendapatkan objek fungsi hash yang disimpan.
hasher hash_function() const;
Tampilkan Nilai
Objek fungsi hash yang disimpan.
insert
Menambahkan elemen ke concurrent_unordered_map
objek.
std::pair<iterator,
bool> insert(
const value_type& value);
iterator insert(
const_iterator _Where,
const value_type& value);
template<class _Iterator>
void insert(_Iterator first,
_Iterator last);
template<class V>
std::pair<iterator,
bool> insert(
V&& value);
template<class V>
typename std::enable_if<!std::is_same<const_iterator,
typename std::remove_reference<V>::type>::value,
iterator>::type insert(
const_iterator _Where,
V&& value);
Parameter
_Iterator
Jenis iterator yang digunakan untuk penyisipan.
V
Jenis nilai yang disisipkan ke dalam peta.
value
Nilai yang akan disisipkan.
_Mana
Lokasi awal untuk mencari titik penyisipan.
first
Awal rentang yang akan disisipkan.
last
Akhir rentang yang akan disisipkan.
Tampilkan Nilai
Pasangan yang berisi iterator dan nilai boolean. Lihat bagian Keterangan untuk detail selengkapnya.
Keterangan
Fungsi anggota pertama menentukan apakah elemen X ada dalam urutan yang kuncinya memiliki urutan yang value
setara dengan . Jika tidak, ia membuat elemen X seperti itu dan menginisialisasinya dengan value
. Fungsi kemudian menentukan iterator where
yang menunjuk X. Jika terjadi penyisipan, fungsi mengembalikan std::pair(where, true)
. Jika tidak, ia kembali std::pair(where, false)
.
Fungsi anggota kedua mengembalikan insert( value
), menggunakan _Where
sebagai tempat awal dalam urutan terkontrol untuk mencari titik penyisipan.
Fungsi anggota ketiga menyisipkan urutan nilai elemen dari rentang [ first
, last
).
Dua fungsi anggota terakhir berperilaku sama dengan dua pertama, kecuali yang digunakan untuk membangun nilai yang value
disisipkan.
key_eq
Mendapatkan objek fungsi perbandingan kesetaraan tersimpan.
key_equal key_eq() const;
Tampilkan Nilai
Objek fungsi perbandingan kesetaraan tersimpan.
load_factor
Menghitung dan mengembalikan faktor beban kontainer saat ini. Faktor beban adalah jumlah elemen dalam kontainer yang dibagi dengan jumlah wadah.
float load_factor() const;
Tampilkan Nilai
Faktor beban untuk kontainer.
max_load_factor
Mendapatkan atau mengatur faktor beban maksimum kontainer. Faktor beban maksimum adalah jumlah elemen terbesar daripada yang dapat berada di wadah apa pun sebelum kontainer menumbuhkan tabel internalnya.
float max_load_factor() const;
void max_load_factor(float _Newmax);
Parameter
_Newmax
Tampilkan Nilai
Fungsi anggota pertama mengembalikan faktor beban maksimum yang disimpan. Fungsi anggota kedua tidak mengembalikan nilai tetapi melempar pengecualian out_of_range jika faktor beban yang disediakan tidak valid..
max_size
Mengembalikan ukuran maksimum kontainer bersamaan, yang ditentukan oleh alokator. Metode ini aman konkurensi.
size_type max_size() const;
Tampilkan Nilai
Jumlah maksimum elemen yang dapat dimasukkan ke dalam kontainer bersamaan ini.
Keterangan
Nilai terikat atas ini sebenarnya mungkin lebih tinggi dari apa yang sebenarnya dapat ditahan oleh kontainer.
operator[]
Menemukan atau menyisipkan elemen dengan kunci yang ditentukan. Metode ini aman konkurensi.
mapped_type& operator[](const key_type& kval);
mapped_type& operator[](key_type&& kval);
Parameter
KVal
Nilai kunci untuk
temukan atau sisipkan.
Tampilkan Nilai
Referensi ke nilai data elemen yang ditemukan atau disisipkan.
Keterangan
Jika nilai kunci argumen tidak ditemukan, maka nilai tersebut disisipkan bersama dengan nilai default jenis data.
operator[]
dapat digunakan untuk menyisipkan elemen ke dalam peta m
menggunakan m[key] = DataValue;
, di mana DataValue
adalah nilai mapped_type
elemen dengan nilai key
kunci .
Saat menggunakan operator[]
untuk menyisipkan elemen, referensi yang dikembalikan tidak menunjukkan apakah penyisipan mengubah elemen yang sudah ada sebelumnya atau membuat yang baru. Anggota berfungsi find
dan menyisipkan dapat digunakan untuk menentukan apakah elemen dengan kunci tertentu sudah ada sebelum penyisipan.
operator=
Menetapkan isi objek lain concurrent_unordered_map
untuk objek ini. Metode ini tidak aman konkurensi.
concurrent_unordered_map& operator= (const concurrent_unordered_map& _Umap);
concurrent_unordered_map& operator= (concurrent_unordered_map&& _Umap);
Parameter
_Umap
Objek sumber concurrent_unordered_map
.
Tampilkan Nilai
Referensi ke objek ini concurrent_unordered_map
.
Keterangan
Setelah menghapus elemen yang ada, vektor bersamaan, operator=
baik menyalin atau memindahkan konten ke vektor bersamaan _Umap
.
rehash
Membangun kembali tabel hash.
void rehash(size_type _Buckets);
Parameter
_Ember
Jumlah wadah yang diinginkan.
Keterangan
Fungsi anggota mengubah jumlah wadah menjadi setidaknya _Buckets
dan membangun kembali tabel hash sesuai kebutuhan. Jumlah ember harus berupa kekuatan 2. Jika bukan kekuatan 2, itu akan dibulatkan ke kekuatan terbesar berikutnya 2.
Ini melemparkan pengecualian out_of_range jika jumlah wadah tidak valid (baik 0 atau lebih besar dari jumlah maksimum wadah).
size
Mengembalikan jumlah elemen dalam kontainer bersamaan ini. Metode ini aman konkurensi.
size_type size() const;
Tampilkan Nilai
Jumlah item dalam kontainer.
Keterangan
Di hadapan sisipan bersamaan, jumlah elemen dalam kontainer bersamaan dapat berubah segera setelah memanggil fungsi ini, sebelum nilai pengembalian bahkan dibaca.
pertukaran
Menukar isi dua concurrent_unordered_map
objek. Metode ini tidak aman konkurensi.
void swap(concurrent_unordered_map& _Umap);
Parameter
_Umap
Objek concurrent_unordered_map
yang akan ditukar.
unsafe_begin
Mengembalikan iterator ke elemen pertama dalam kontainer ini untuk wadah tertentu.
local_iterator unsafe_begin(size_type _Bucket);
const_local_iterator unsafe_begin(size_type _Bucket) const;
Parameter
_Ember
Indeks wadah.
Tampilkan Nilai
Iterator yang menunjuk ke awal wadah.
unsafe_bucket
Mengembalikan indeks wadah yang dipetakan kunci tertentu dalam kontainer ini.
size_type unsafe_bucket(const key_type& KVal) const;
Parameter
KVal
Kunci elemen yang sedang dicari.
Tampilkan Nilai
Indeks wadah untuk kunci dalam kontainer ini.
unsafe_bucket_count
Mengembalikan jumlah wadah saat ini dalam kontainer ini.
size_type unsafe_bucket_count() const;
Tampilkan Nilai
Jumlah wadah saat ini dalam kontainer ini.
unsafe_bucket_size
Mengembalikan jumlah item dalam wadah tertentu dari kontainer ini.
size_type unsafe_bucket_size(size_type _Bucket);
Parameter
_Ember
Wadah yang akan dicari.
Tampilkan Nilai
Jumlah wadah saat ini dalam kontainer ini.
unsafe_cbegin
Mengembalikan iterator ke elemen pertama dalam kontainer ini untuk wadah tertentu.
const_local_iterator unsafe_cbegin(size_type _Bucket) const;
Parameter
_Ember
Indeks wadah.
Tampilkan Nilai
Iterator yang menunjuk ke awal wadah.
unsafe_cend
Mengembalikan iterator ke lokasi yang menggantikan elemen terakhir dalam wadah tertentu.
const_local_iterator unsafe_cend(size_type _Bucket) const;
Parameter
_Ember
Indeks wadah.
Tampilkan Nilai
Iterator yang menunjuk ke awal wadah.
unsafe_end
Mengembalikan iterator ke elemen terakhir dalam kontainer ini untuk wadah tertentu.
local_iterator unsafe_end(size_type _Bucket);
const_local_iterator unsafe_end(size_type _Bucket) const;
Parameter
_Ember
Indeks wadah.
Tampilkan Nilai
Iterator yang menunjuk ke akhir wadah.
unsafe_erase
Menghapus elemen dari concurrent_unordered_map
pada posisi yang ditentukan. Metode ini tidak aman konkurensi.
iterator unsafe_erase(
const_iterator _Where);
iterator unsafe_erase(
const_iterator _Begin,
const_iterator _End);
size_type unsafe_erase(
const key_type& KVal);
Parameter
_Mana
Posisi iterator untuk menghapus dari.
_Mulai
Posisi elemen pertama dalam rentang elemen yang akan dihapus.
_Akhir
Posisi elemen pertama di luar rentang elemen yang akan dihapus.
KVal
Nilai kunci untuk menghapus.
Tampilkan Nilai
Dua fungsi anggota pertama mengembalikan iterator yang menunjuk elemen pertama yang tersisa di luar elemen apa pun yang dihapus, atau concurrent_unordered_map::end
() jika tidak ada elemen tersebut. Fungsi anggota ketiga mengembalikan jumlah elemen yang dihapusnya.
Keterangan
Fungsi anggota pertama menghapus elemen urutan terkontrol yang diacu oleh _Where
. Fungsi anggota kedua menghapus elemen dalam rentang [ _Begin
, _End
).
Fungsi anggota ketiga menghapus elemen dalam rentang yang dibatasi oleh concurrent_unordered_map::equal_range
(KVal).
unsafe_max_bucket_count
Mengembalikan jumlah maksimum wadah dalam kontainer ini.
size_type unsafe_max_bucket_count() const;
Tampilkan Nilai
Jumlah maksimum wadah dalam kontainer ini.
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