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.
Templat kelas menjelaskan objek yang mengontrol urutan panjang yang bervariasi dari elemen jenis std::pair<const Key, Ty>. Urutannya lemah diurutkan oleh fungsi hash, yang mempartisi urutan ke dalam set subur yang diurutkan yang disebut wadah. Dalam setiap wadah, fungsi perbandingan menentukan apakah ada sepasang elemen yang memiliki urutan yang setara. Setiap elemen menyimpan dua objek, kunci pengurutan, dan nilai. Urutan diwakili dengan cara yang mengizinkan pencarian, penyisipan, dan penghapusan elemen arbitrer dengan operasi yang dapat terlepas dari jumlah elemen dalam urutan (waktu konstan), setidaknya ketika semua wadah memiliki panjang yang kira-kira sama. Dalam kasus terburuk, ketika semua elemen berada dalam satu wadah, jumlah operasi sebanding dengan jumlah elemen dalam urutan (waktu linier). Selain itu, memasukkan elemen tidak membatalkan iterator, dan menghapus elemen hanya membatalkan iterator yang menunjuk pada elemen yang dihapus.
Sintaks
template <class Key,
class Ty,
class Hash = std::hash<Key>,
class Pred = std::equal_to<Key>,
class Alloc = std::allocator<std::pair<const Key, Ty>>>
class unordered_map;
Parameter
Key
Jenis kunci.
Ty
Jenis yang dipetakan.
Hash
Jenis objek fungsi hash.
Pred
Jenis objek fungsi perbandingan kesetaraan.
Alloc
Kelas alokator.
Anggota
| Definisi Tipe | 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. |
| Fungsi Anggota | Deskripsi |
|---|---|
at |
Menemukan elemen dengan kunci yang ditentukan. |
begin |
Menunjuk awal urutan yang dikontrol. |
bucket |
Mendapatkan nomor wadah untuk nilai kunci. |
bucket_count |
Mendapatkan jumlah ember. |
bucket_size |
Mendapatkan ukuran ember. |
cbegin |
Menunjuk awal urutan yang dikontrol. |
cend |
Menunjuk akhir urutan yang dikontrol. |
clear |
Menghapus semua elemen. |
count |
Menemukan jumlah elemen yang cocok dengan kunci tertentu. |
contains
C++20 |
Periksa apakah ada elemen dengan kunci yang ditentukan di unordered_map. |
emplace |
Menambahkan elemen yang dibangun di tempat. |
emplace_hint |
Menambahkan elemen yang dibangun di tempat, dengan petunjuk. |
empty |
Menguji apakah tidak ada elemen yang ada. |
end |
Menunjuk akhir urutan yang dikontrol. |
equal_range |
Menemukan rentang yang cocok dengan kunci tertentu. |
erase |
Menghapus elemen pada posisi yang ditentukan. |
find |
Menemukan elemen yang cocok dengan kunci tertentu. |
get_allocator |
Mendapatkan objek alokator tersimpan. |
hash_function |
Mendapatkan objek fungsi hash yang disimpan. |
insert |
Menambahkan elemen. |
key_eq |
Mendapatkan objek fungsi perbandingan tersimpan. |
load_factor |
Menghitung elemen rata-rata per wadah. |
max_bucket_count |
Mendapatkan jumlah maksimum wadah. |
max_load_factor |
Mendapatkan atau mengatur elemen maksimum per wadah. |
max_size |
Mendapatkan ukuran maksimum urutan yang dikontrol. |
rehash |
Membangun kembali tabel hash. |
size |
Menghitung jumlah elemen. |
swap |
Menukar isi dua kontainer. |
unordered_map |
Membuat objek kontainer. |
| Pengoperasi | Deskripsi |
|---|---|
unordered_map::operator[] |
Menemukan atau menyisipkan elemen dengan kunci yang ditentukan. |
unordered_map::operator= |
Menyalin tabel hash. |
Keterangan
Objek mengurutkan urutan yang dikontrolnya dengan memanggil dua objek tersimpan, objek fungsi perbandingan jenis unordered_map::key_equal dan objek fungsi hash jenis unordered_map::hasher. Anda mengakses objek tersimpan pertama dengan memanggil fungsi unordered_map::key_eq()anggota ; dan Anda mengakses objek tersimpan kedua dengan memanggil fungsi unordered_map::hash_function()anggota . Secara khusus, untuk semua nilai X dan Y jenis Key, panggilan key_eq()(X, Y) mengembalikan true hanya jika dua nilai argumen memiliki pengurutan yang setara; panggilan hash_function()(keyval) menghasilkan distribusi nilai jenis size_t. Tidak seperti templat unordered_multimapkelas , objek jenis unordered_map memastikan bahwa key_eq()(X, Y) selalu salah untuk dua elemen urutan yang dikontrol. (Kunci unik.)
Objek ini juga menyimpan faktor beban maksimum, yang menentukan jumlah rata-rata maksimum elemen yang diinginkan per wadah. Jika menyisipkan elemen menyebabkan unordered_map::load_factor() melebihi faktor beban maksimum, kontainer meningkatkan jumlah wadah dan membangun kembali tabel hash sesuai kebutuhan.
Urutan elemen aktual dalam urutan yang dikontrol tergantung pada fungsi hash, fungsi perbandingan, urutan penyisipan, faktor beban maksimum, dan jumlah wadah saat ini. Anda tidak dapat secara umum memprediksi urutan elemen dalam urutan yang dikontrol. Namun, Anda selalu dapat yakin bahwa subset elemen apa pun yang memiliki urutan yang setara berdekatan dalam urutan yang dikontrol.
Objek mengalokasikan dan membebaskan penyimpanan untuk urutan yang dikontrolnya melalui objek alokator tersimpan jenis unordered_map::allocator_type. Objek alokator semacam itu harus memiliki antarmuka eksternal yang sama dengan objek jenis allocator. Objek alokator tersimpan tidak disalin saat objek kontainer ditetapkan.
Persyaratan
Header :<unordered_map>
Namespace: std
unordered_map::allocator_type
Jenis alokator untuk mengelola penyimpanan.
typedef Alloc allocator_type;
Keterangan
Jenisnya adalah sinonim untuk parameter Alloctemplat .
Contoh
// std__unordered_map__unordered_map_allocator_type.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
typedef std::allocator<std::pair<const char, int> > Myalloc;
int main()
{
Mymap c1;
Mymap::allocator_type al = c1.get_allocator();
std::cout << "al == std::allocator() is "
<< std::boolalpha << (al == Myalloc()) << std::endl;
return (0);
}
al == std::allocator() is true
unordered_map::at
Menemukan elemen dalam unordered_map dengan nilai kunci tertentu.
Ty& at(const Key& key);
const Ty& at(const Key& key) const;
Parameter
key
Nilai kunci yang akan ditemukan.
Tampilkan Nilai
Referensi ke nilai data elemen yang ditemukan.
Keterangan
Jika nilai kunci argumen tidak ditemukan, maka fungsi akan melemparkan objek kelas out_of_range.
Contoh
// unordered_map_at.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// find and show elements
std::cout << "c1.at('a') == " << c1.at('a') << std::endl;
std::cout << "c1.at('b') == " << c1.at('b') << std::endl;
std::cout << "c1.at('c') == " << c1.at('c') << std::endl;
return (0);
}
unordered_map::begin
Menunjuk awal urutan terkontrol atau wadah.
iterator begin();
const_iterator begin() const;
local_iterator begin(size_type nbucket);
const_local_iterator begin(size_type nbucket) const;
Parameter
nbucket
Nomor ember.
Keterangan
Dua fungsi anggota pertama mengembalikan iterator maju yang menunjuk pada elemen pertama urutan (atau tepat di luar akhir urutan kosong). Dua fungsi anggota terakhir mengembalikan iterator maju yang menunjuk pada elemen pertama wadah nbucket (atau tepat di luar akhir wadah kosong).
Contoh
// std__unordered_map__unordered_map_begin.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// inspect first two items " [c 3] [b 2]"
Mymap::iterator it2 = c1.begin();
std::cout << " [" << it2->first << ", " << it2->second << "]";
++it2;
std::cout << " [" << it2->first << ", " << it2->second << "]";
std::cout << std::endl;
// inspect bucket containing 'a'
Mymap::const_local_iterator lit = c1.begin(c1.bucket('a'));
std::cout << " [" << lit->first << ", " << lit->second << "]";
return (0);
}
[c, 3] [b, 2] [a, 1]
[c, 3] [b, 2]
[a, 1]
unordered_map::bucket
Mendapatkan nomor wadah untuk nilai kunci.
size_type bucket(const Key& keyval) const;
Parameter
keyval
Nilai kunci yang akan dipetakan.
Keterangan
Fungsi anggota mengembalikan nomor wadah yang saat ini sesuai dengan nilai keyvalkunci .
Contoh
// std__unordered_map__unordered_map_bucket.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// display buckets for keys
Mymap::size_type bs = c1.bucket('a');
std::cout << "bucket('a') == " << bs << std::endl;
std::cout << "bucket_size(" << bs << ") == " << c1.bucket_size(bs)
<< std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
bucket('a') == 7
bucket_size(7) == 1
unordered_map::bucket_count
Mendapatkan jumlah ember.
size_type bucket_count() const;
Keterangan
Fungsi anggota mengembalikan jumlah wadah saat ini.
Contoh
// std__unordered_map__unordered_map_bucket_count.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// inspect current parameters
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_bucket_count() == "
<< c1.max_bucket_count() << std::endl;
std::cout << "max_load_factor() == "
<< c1.max_load_factor() << std::endl;
std::cout << std::endl;
// change max_load_factor and redisplay
c1.max_load_factor(0.10f);
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_bucket_count() == "
<< c1.max_bucket_count() << std::endl;
std::cout << "max_load_factor() == "
<< c1.max_load_factor() << std::endl;
std::cout << std::endl;
// rehash and redisplay
c1.rehash(100);
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_bucket_count() == "
<< c1.max_bucket_count() << std::endl;
std::cout << "max_load_factor() == "
<< c1.max_load_factor() << std::endl;
std::cout << std::endl;
return (0);
}
[c, 3][b, 2][a, 1]
bucket_count() == 8
load_factor() == 0.375
max_bucket_count() == 8
max_load_factor() == 4
bucket_count() == 8
load_factor() == 0.375
max_bucket_count() == 8
max_load_factor() == 0.1
bucket_count() == 128
load_factor() == 0.0234375
max_bucket_count() == 128
max_load_factor() == 0.1
unordered_map::bucket_size
Mendapatkan ukuran wadah
size_type bucket_size(size_type nbucket) const;
Parameter
nbucket
Nomor ember.
Keterangan
Fungsi anggota mengembalikan ukuran nomor nbucketwadah .
Contoh
// std__unordered_map__unordered_map_bucket_size.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// display buckets for keys
Mymap::size_type bs = c1.bucket('a');
std::cout << "bucket('a') == " << bs << std::endl;
std::cout << "bucket_size(" << bs << ") == " << c1.bucket_size(bs)
<< std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
bucket('a') == 7
bucket_size(7) == 1
unordered_map::cbegin
Mengembalikan iterator const yang membahas elemen pertama dalam rentang.
const_iterator cbegin() const;
Tampilkan Nilai
Iterator const akses maju yang menunjuk pada elemen pertama rentang, atau lokasi tepat di luar akhir rentang kosong (untuk rentang kosong, cbegin() == cend()).
Keterangan
Dengan nilai cbeginpengembalian , elemen dalam rentang tidak dapat dimodifikasi.
Anda dapat menggunakan fungsi anggota ini sebagai pengganti begin() fungsi anggota untuk menjamin bahwa nilai yang dikembalikan adalah const_iterator. Biasanya, ini digunakan dengan kata kunci pengurangan auto jenis, seperti yang ditunjukkan dalam contoh berikut. Dalam contoh, pertimbangkan Container untuk menjadi kontainer yang dapat dimodifikasi (non- const) dari segala jenis yang mendukung begin() dan cbegin().
auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();
// i2 is Container<T>::const_iterator
unordered_map::cend
Mengembalikan iterator const yang membahas lokasi tepat di luar elemen terakhir dalam rentang.
const_iterator cend() const;
Tampilkan Nilai
Iterator const akses maju yang menunjuk tepat di luar akhir rentang.
Keterangan
cend digunakan untuk menguji apakah iterator telah melewati akhir rentangnya.
Anda dapat menggunakan fungsi anggota ini sebagai pengganti end() fungsi anggota untuk menjamin bahwa nilai yang dikembalikan adalah const_iterator. Biasanya, ini digunakan dengan kata kunci pengurangan auto jenis, seperti yang ditunjukkan dalam contoh berikut. Dalam contoh, pertimbangkan Container untuk menjadi kontainer yang dapat dimodifikasi (non- const) dari segala jenis yang mendukung end() dan cend().
auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();
// i2 is Container<T>::const_iterator
Nilai yang dikembalikan oleh cend tidak boleh didereferensikan.
unordered_map::clear
Menghapus semua elemen.
void clear();
Keterangan
Fungsi anggota memanggil unordered_map::erase(unordered_map::begin(), unordered_map::end()), lihat unordered_map::erase, , unordered_map::begindan unordered_map::end.
Contoh
// std__unordered_map__unordered_map_clear.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// clear the container and reinspect
c1.clear();
std::cout << "size == " << c1.size() << std::endl;
std::cout << "empty() == " << std::boolalpha << c1.empty() << std::endl;
std::cout << std::endl;
c1.insert(Mymap::value_type('d', 4));
c1.insert(Mymap::value_type('e', 5));
// display contents " [e 5] [d 4]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
std::cout << "size == " << c1.size() << std::endl;
std::cout << "empty() == " << std::boolalpha << c1.empty() << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
size == 0
empty() == true
[e, 5] [d, 4]
size == 2
empty() == false
unordered_map::const_iterator
Jenis iterator konstan untuk urutan terkontrol.
typedef T1 const_iterator;
Keterangan
Jenis menjelaskan objek yang dapat berfungsi sebagai iterator penerusan konstan untuk urutan yang dikontrol. Ini dijelaskan di sini sebagai sinonim untuk jenis T1yang ditentukan implementasi .
Contoh
// std__unordered_map__unordered_map_const_iterator.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
unordered_map::const_local_iterator
Jenis iterator wadah konstan untuk urutan yang dikontrol.
typedef T5 const_local_iterator;
Keterangan
Jenis ini menjelaskan objek yang dapat berfungsi sebagai iterator penerusan konstan untuk wadah. Ini dijelaskan di sini sebagai sinonim untuk jenis T5yang ditentukan implementasi .
Contoh
// std__unordered_map__unordered_map_const_local_iterator.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// inspect bucket containing 'a'
Mymap::const_local_iterator lit = c1.begin(c1.bucket('a'));
std::cout << " [" << lit->first << ", " << lit->second << "]";
return (0);
}
[c, 3] [b, 2] [a, 1]
[a, 1]
unordered_map::const_pointer
Jenis penunjuk konstan ke elemen.
typedef Alloc::const_pointer const_pointer;
Keterangan
Jenis menjelaskan objek yang dapat berfungsi sebagai penunjuk konstan ke elemen urutan yang dikontrol.
Contoh
// std__unordered_map__unordered_map_const_pointer.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::iterator it = c1.begin();
it != c1.end(); ++it)
{
Mymap::const_pointer p = &*it;
std::cout << " [" << p->first << ", " << p->second << "]";
}
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
unordered_map::const_reference
Jenis referensi konstanta ke elemen.
typedef Alloc::const_reference const_reference;
Keterangan
Jenis menjelaskan objek yang dapat berfungsi sebagai referensi konstan ke elemen urutan yang dikontrol.
Contoh
// std__unordered_map__unordered_map_const_reference.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::iterator it = c1.begin();
it != c1.end(); ++it)
{
Mymap::const_reference ref = *it;
std::cout << " [" << ref.first << ", " << ref.second << "]";
}
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
unordered_map::contains
Memeriksa apakah ada elemen di unordered_map dengan kunci yang ditentukan.
Diperkenalkan di C++20.
bool contains(const Key& key) const;
<class K> bool contains(const K& key) const;
Parameter
K
Jenis kunci.
key
Nilai kunci elemen yang akan dicari.
Tampilkan Nilai
true jika elemen ditemukan dalam kontainer; false Sebaliknya.
Keterangan
contains() baru di C++20. Untuk menggunakannya, tentukan opsi pengkompilasi atau yang /std:c++20 lebih baru.
template<class K> bool contains(const K& key) const hanya berpartisipasi dalam resolusi kelebihan beban jika key_compare transparan.
Contoh
// Requires /std:c++20 or later
#include <unordered_map>
#include <iostream>
int main()
{
std::unordered_map<int, bool> theUnorderedMap = {{0, false}, {1,true}};
std::cout << std::boolalpha; // so booleans show as 'true' or 'false'
std::cout << theUnorderedMap.contains(1) << '\n';
std::cout << theUnorderedMap.contains(2) << '\n';
return 0;
}
true
false
unordered_map::count
Menemukan jumlah elemen yang cocok dengan kunci tertentu.
size_type count(const Key& keyval) const;
Parameter
keyval
Nilai kunci yang akan dicari.
Keterangan
Fungsi anggota mengembalikan jumlah elemen dalam rentang yang dibatasi oleh unordered_map::equal_range(keyval).
Contoh
// std__unordered_map__unordered_map_count.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
std::cout << "count('A') == " << c1.count('A') << std::endl;
std::cout << "count('b') == " << c1.count('b') << std::endl;
std::cout << "count('C') == " << c1.count('C') << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
count('A') == 0
count('b') == 1
count('C') == 0
unordered_map::difference_type
Jenis jarak yang ditandatangani antara dua elemen.
typedef T3 difference_type;
Keterangan
Jenis bilangan bulat yang ditandatangani menjelaskan objek yang dapat mewakili perbedaan antara alamat dua elemen dalam urutan terkontrol. Ini dijelaskan di sini sebagai sinonim untuk jenis T3yang ditentukan implementasi .
Contoh
// std__unordered_map__unordered_map_difference_type.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// compute positive difference
Mymap::difference_type diff = 0;
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
++diff;
std::cout << "end()-begin() == " << diff << std::endl;
// compute negative difference
diff = 0;
for (Mymap::const_iterator it = c1.end();
it != c1.begin(); --it)
--diff;
std::cout << "begin()-end() == " << diff << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
end()-begin() == 3
begin()-end() == -3
unordered_map::emplace
Menyisipkan elemen yang dibangun di tempat (tidak ada operasi salin atau pemindahan yang dilakukan) ke dalam unordered_map.
template <class... Args>
pair<iterator, bool> emplace( Args&&... args);
Parameter
args
Argumen yang diteruskan untuk membuat elemen yang akan dimasukkan ke dalam unordered_map kecuali sudah berisi elemen yang nilainya diurutkan secara setara.
Tampilkan Nilai
Komponen pair yang bool mengembalikan true jika penyisipan dibuat dan salah jika unordered_map sudah berisi elemen yang kuncinya memiliki nilai yang setara dalam pengurutan, dan yang komponen iteratornya mengembalikan alamat tempat elemen baru dimasukkan atau di mana elemen sudah berada.
Untuk mengakses komponen iterator pasangan pr yang dikembalikan oleh fungsi anggota ini, gunakan pr.first, dan untuk mendereferensikannya, gunakan *(pr.first). Untuk mengakses bool komponen pasangan pr yang dikembalikan oleh fungsi anggota ini, gunakan pr.second.
Keterangan
Tidak ada iterator atau referensi yang tidak valid oleh fungsi ini.
Selama penyisipan, jika pengecualian dilemparkan tetapi tidak terjadi dalam fungsi hash kontainer, kontainer tidak dimodifikasi. Jika pengecualian dilemparkan dalam fungsi hash, hasilnya tidak ditentukan.
Untuk contoh kode, lihat map::emplace.
unordered_map::emplace_hint
Menyisipkan elemen yang dibangun di tempat (tidak ada operasi salin atau pemindahan yang dilakukan), dengan petunjuk penempatan.
template <class... Args>
iterator emplace_hint(const_iterator where, Args&&... args);
Parameter
args
Argumen yang diteruskan untuk membuat elemen yang akan dimasukkan ke dalam unordered_map kecuali unordered_map sudah berisi elemen tersebut atau, lebih umum, kecuali sudah berisi elemen yang kuncinya diurutkan secara setara.
where
Petunjuk mengenai tempat untuk mulai mencari titik penyisipan yang benar.
Tampilkan Nilai
Iterator ke elemen yang baru disisipkan.
Jika penyisipan gagal karena elemen sudah ada, mengembalikan iterator ke elemen yang ada.
Keterangan
Tidak ada referensi yang tidak valid oleh fungsi ini.
Selama penyisipan, jika pengecualian dilemparkan tetapi tidak terjadi dalam fungsi hash kontainer, kontainer tidak dimodifikasi. Jika pengecualian dilemparkan dalam fungsi hash, hasilnya tidak ditentukan.
Elemen value_type adalah pasangan, sehingga nilai elemen akan menjadi pasangan yang diurutkan dengan komponen pertama yang sama dengan nilai kunci dan komponen kedua yang sama dengan nilai data elemen.
Untuk contoh kode, lihat map::emplace_hint.
unordered_map::empty
Menguji apakah tidak ada elemen yang ada.
bool empty() const;
Keterangan
Fungsi anggota mengembalikan true untuk urutan yang dikontrol kosong.
Contoh
// std__unordered_map__unordered_map_empty.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// clear the container and reinspect
c1.clear();
std::cout << "size == " << c1.size() << std::endl;
std::cout << "empty() == " << std::boolalpha << c1.empty() << std::endl;
std::cout << std::endl;
c1.insert(Mymap::value_type('d', 4));
c1.insert(Mymap::value_type('e', 5));
// display contents " [e 5] [d 4]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
std::cout << "size == " << c1.size() << std::endl;
std::cout << "empty() == " << std::boolalpha << c1.empty() << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
size == 0
empty() == true
[e, 5] [d, 4]
size == 2
empty() == false
unordered_map::end
Menunjuk akhir urutan yang dikontrol.
iterator end();
const_iterator end() const;
local_iterator end(size_type nbucket);
const_local_iterator end(size_type nbucket) const;
Parameter
nbucket
Nomor ember.
Keterangan
Dua fungsi anggota pertama mengembalikan iterator maju yang menunjuk tepat di luar akhir urutan. Dua fungsi anggota terakhir mengembalikan iterator maju yang menunjuk tepat di luar akhir wadah nbucket.
unordered_map::equal_range
Menemukan rentang yang cocok dengan kunci tertentu.
std::pair<iterator, iterator> equal_range(const Key& keyval);
std::pair<const_iterator, const_iterator> equal_range(const Key& keyval) const;
Parameter
keyval
Nilai kunci yang akan dicari.
Keterangan
Fungsi anggota mengembalikan sepasang iterator X sehingga [X.first, X.second) hanya memisahkan elemen urutan terkontrol yang memiliki pengurutan yang setara dengan keyval. Jika tidak ada elemen seperti itu, kedua iterator adalah end().
Contoh
// std__unordered_map__unordered_map_equal_range.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// display results of failed search
std::pair<Mymap::iterator, Mymap::iterator> pair1 =
c1.equal_range('x');
std::cout << "equal_range('x'):";
for (; pair1.first != pair1.second; ++pair1.first)
std::cout << " [" << pair1.first->first
<< ", " << pair1.first->second << "]";
std::cout << std::endl;
// display results of successful search
pair1 = c1.equal_range('b');
std::cout << "equal_range('b'):";
for (; pair1.first != pair1.second; ++pair1.first)
std::cout << " [" << pair1.first->first
<< ", " << pair1.first->second << "]";
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
equal_range('x'):
equal_range('b'): [b, 2]
unordered_map::erase
Menghapus elemen atau rentang elemen dalam unordered_map dari posisi tertentu atau menghapus elemen yang cocok dengan kunci tertentu.
iterator erase(const_iterator Where);
iterator erase(const_iterator First, const_iterator Last);
size_type erase(const key_type& Key);
Parameter
Where
Posisi elemen yang akan dihapus.
First
Posisi elemen pertama yang akan dihapus.
Last
Posisi tepat di luar elemen terakhir yang akan dihapus.
Key
Nilai kunci elemen yang akan dihapus.
Tampilkan Nilai
Untuk dua fungsi anggota pertama, iterator dua arah yang menunjuk elemen pertama yang tersisa di luar elemen apa pun yang dihapus, atau elemen yang merupakan akhir peta jika tidak ada elemen tersebut.
Untuk fungsi anggota ketiga, mengembalikan jumlah elemen yang telah dihapus dari unordered_map.
Keterangan
Untuk contoh kode, lihat map::erase.
unordered_map::find
Menemukan elemen yang cocok dengan kunci tertentu.
const_iterator find(const Key& keyval) const;
Parameter
keyval
Nilai kunci yang akan dicari.
Keterangan
Fungsi anggota mengembalikan unordered_map::equal_range(keyval).first.
Contoh
// std__unordered_map__unordered_map_find.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// try to find and fail
std::cout << "find('A') == "
<< std::boolalpha << (c1.find('A') != c1.end()) << std::endl;
// try to find and succeed
Mymap::iterator it = c1.find('b');
std::cout << "find('b') == "
<< std::boolalpha << (it != c1.end())
<< ": [" << it->first << ", " << it->second << "]" << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
find('A') == false
find('b') == true: [b, 2]
unordered_map::get_allocator
Mendapatkan objek alokator tersimpan.
Alloc get_allocator() const;
Keterangan
Fungsi anggota mengembalikan objek alokator tersimpan.
Contoh
// std__unordered_map__unordered_map_get_allocator.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
typedef std::allocator<std::pair<const char, int> > Myalloc;
int main()
{
Mymap c1;
Mymap::allocator_type al = c1.get_allocator();
std::cout << "al == std::allocator() is "
<< std::boolalpha << (al == Myalloc()) << std::endl;
return (0);
}
al == std::allocator() is true
unordered_map::hash_function
Mendapatkan objek fungsi hash yang disimpan.
Hash hash_function() const;
Keterangan
Fungsi anggota mengembalikan objek fungsi hash tersimpan.
Contoh
// std__unordered_map__unordered_map_hash_function.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
Mymap::hasher hfn = c1.hash_function();
std::cout << "hfn('a') == " << hfn('a') << std::endl;
std::cout << "hfn('b') == " << hfn('b') << std::endl;
return (0);
}
hfn('a') == 1630279
hfn('b') == 1647086
unordered_map::hasher
Jenis fungsi hash.
typedef Hash hasher;
Keterangan
Jenisnya adalah sinonim untuk parameter Hashtemplat .
Contoh
// std__unordered_map__unordered_map_hasher.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
Mymap::hasher hfn = c1.hash_function();
std::cout << "hfn('a') == " << hfn('a') << std::endl;
std::cout << "hfn('b') == " << hfn('b') << std::endl;
return (0);
}
hfn('a') == 1630279
hfn('b') == 1647086
unordered_map::insert
Menyisipkan elemen atau rentang elemen ke dalam unordered_map.
// (1) single element
pair<iterator, bool> insert( const value_type& Val);
// (2) single element, perfect forwarded
template <class ValTy>
pair<iterator, bool>
insert( ValTy&& Val);
// (3) single element with hint
iterator insert( const_iterator Where,
const value_type& Val);
// (4) single element, perfect forwarded, with hint
template <class ValTy>
iterator insert( const_iterator Where,
ValTy&& Val);
// (5) range
template <class InputIterator>
void insert(InputIterator First,
InputIterator Last);
// (6) initializer list
void insert(initializer_list<value_type>
IList);
Parameter
Val
Nilai elemen yang akan dimasukkan ke dalam unordered_map kecuali sudah berisi elemen yang kuncinya diurutkan secara setara.
Where
Tempat untuk mulai mencari titik penyisipan yang benar.
ValTy
Parameter templat yang menentukan jenis argumen yang dapat digunakan unordered_map untuk membangun elemen value_type, dan perfect-forwards Val sebagai argumen.
First
Posisi elemen pertama yang akan disalin.
Last
Posisi tepat di luar elemen terakhir yang akan disalin.
InputIterator
Argumen fungsi templat yang memenuhi persyaratan iterator input yang menunjuk ke elemen jenis yang dapat digunakan untuk membuat value_type objek.
IList
dari initializer_list mana untuk menyalin elemen.
Tampilkan Nilai
Anggota elemen tunggal berfungsi, (1) dan (2), mengembalikan pair komponen yang bool jika true penyisipan dibuat, dan false jika unordered_map sudah berisi elemen yang kuncinya memiliki nilai yang setara dalam pengurutan. Komponen iterator dari pasangan nilai kembali menunjuk ke elemen yang baru dimasukkan jika bool komponennya adalah true, atau ke elemen yang ada jika bool komponennya adalah false.
Fungsi anggota elemen-dengan-petunjuk tunggal, (3) dan (4), mengembalikan iterator yang menunjuk ke posisi di mana elemen baru dimasukkan ke dalam unordered_map atau, jika elemen dengan kunci yang setara sudah ada, ke elemen yang ada.
Keterangan
Tidak ada iterator, penunjuk, atau referensi yang tidak valid oleh fungsi ini.
Selama penyisipan hanya satu elemen, jika pengecualian dilemparkan tetapi tidak terjadi dalam fungsi hash kontainer, status kontainer tidak dimodifikasi. Jika pengecualian dilemparkan dalam fungsi hash, hasilnya tidak ditentukan. Selama penyisipan beberapa elemen, jika pengecualian dilemparkan, kontainer dibiarkan dalam status yang tidak ditentukan tetapi valid.
Untuk mengakses komponen pairpr iterator yang dikembalikan oleh fungsi anggota elemen tunggal, gunakan pr.first; untuk mendereferensikan iterator dalam pasangan yang dikembalikan, gunakan *pr.first, memberi Anda elemen. Untuk mengakses bool komponen, gunakan pr.second. Misalnya, lihat kode sampel nanti di artikel ini.
Dari value_type kontainer adalah typedef milik kontainer, dan untuk peta, map<K, V>::value_type adalah pair<const K, V>. Nilai elemen adalah pasangan yang diurutkan di mana komponen pertama sama dengan nilai kunci dan komponen kedua sama dengan nilai data elemen.
Fungsi anggota rentang (5) menyisipkan urutan nilai elemen ke dalam unordered_map yang sesuai dengan setiap elemen yang ditangani oleh iterator dalam rentang [First, Last); oleh karena itu, Last tidak disisipkan. Fungsi end() anggota kontainer mengacu pada posisi tepat setelah elemen terakhir dalam kontainer—misalnya, pernyataan m.insert(v.begin(), v.end()); mencoba menyisipkan semua elemen v ke dalam m. Hanya elemen yang memiliki nilai unik dalam rentang yang disisipkan; duplikat diabaikan. Untuk mengamati elemen mana yang ditolak, gunakan versi elemen tunggal dari insert.
Fungsi anggota daftar penginisialisasi (6) menggunakan initializer_list untuk menyalin elemen ke dalam unordered_map.
Untuk penyisipan elemen yang dibangun di tempat—yaitu, tidak ada operasi salin atau pemindahan yang dilakukan—lihat unordered_map::emplace dan unordered_map::emplace_hint.
Untuk contoh kode, lihat map::insert.
unordered_map::iterator
Jenis iterator untuk urutan yang dikontrol.
typedef T0 iterator;
Keterangan
Jenis menjelaskan objek yang dapat berfungsi sebagai iterator penerusan untuk urutan yang dikontrol. Ini dijelaskan di sini sebagai sinonim untuk jenis T0yang ditentukan implementasi .
Contoh
// std__unordered_map__unordered_map_iterator.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
unordered_map::key_eq
Mendapatkan objek fungsi perbandingan tersimpan.
Pred key_eq() const;
Keterangan
Fungsi anggota mengembalikan objek fungsi perbandingan tersimpan.
Contoh
// std__unordered_map__unordered_map_key_eq.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
Mymap::key_equal cmpfn = c1.key_eq();
std::cout << "cmpfn('a', 'a') == "
<< std::boolalpha << cmpfn('a', 'a') << std::endl;
std::cout << "cmpfn('a', 'b') == "
<< std::boolalpha << cmpfn('a', 'b') << std::endl;
return (0);
}
cmpfn('a', 'a') == true
cmpfn('a', 'b') == false
unordered_map::key_equal
Jenis fungsi perbandingan.
typedef Pred key_equal;
Keterangan
Jenisnya adalah sinonim untuk parameter Predtemplat .
Contoh
// std__unordered_map__unordered_map_key_equal.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
Mymap::key_equal cmpfn = c1.key_eq();
std::cout << "cmpfn('a', 'a') == "
<< std::boolalpha << cmpfn('a', 'a') << std::endl;
std::cout << "cmpfn('a', 'b') == "
<< std::boolalpha << cmpfn('a', 'b') << std::endl;
return (0);
}
cmpfn('a', 'a') == true
cmpfn('a', 'b') == false
unordered_map::key_type
Jenis kunci pemesanan.
typedef Key key_type;
Keterangan
Jenisnya adalah sinonim untuk parameter Keytemplat .
Contoh
// std__unordered_map__unordered_map_key_type.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// add a value and reinspect
Mymap::key_type key = 'd';
Mymap::mapped_type mapped = 4;
Mymap::value_type val = Mymap::value_type(key, mapped);
c1.insert(val);
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
[d, 4] [c, 3] [b, 2] [a, 1]
unordered_map::load_factor
Menghitung elemen rata-rata per wadah.
float load_factor() const;
Keterangan
Fungsi anggota mengembalikan (float)unordered_map::size() / (float)unordered_map::bucket_count(), jumlah rata-rata elemen per wadah, lihat unordered_map::size dan unordered_map::bucket_count.
Contoh
// std__unordered_map__unordered_map_load_factor.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// inspect current parameters
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_bucket_count() == "
<< c1.max_bucket_count() << std::endl;
std::cout << "max_load_factor() == "
<< c1.max_load_factor() << std::endl;
std::cout << std::endl;
// change max_load_factor and redisplay
c1.max_load_factor(0.10f);
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_bucket_count() == "
<< c1.max_bucket_count() << std::endl;
std::cout << "max_load_factor() == "
<< c1.max_load_factor() << std::endl;
std::cout << std::endl;
// rehash and redisplay
c1.rehash(100);
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_bucket_count() == "
<< c1.max_bucket_count() << std::endl;
std::cout << "max_load_factor() == "
<< c1.max_load_factor() << std::endl;
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
bucket_count() == 8
load_factor() == 0.375
max_bucket_count() == 8
max_load_factor() == 4
bucket_count() == 8
load_factor() == 0.375
max_bucket_count() == 8
max_load_factor() == 0.1
bucket_count() == 128
load_factor() == 0.0234375
max_bucket_count() == 128
max_load_factor() == 0.1
unordered_map::local_iterator
Jenis iterator wadah.
typedef T4 local_iterator;
Keterangan
Jenis menjelaskan objek yang dapat berfungsi sebagai iterator ke depan untuk wadah. Ini dijelaskan di sini sebagai sinonim untuk jenis T4yang ditentukan implementasi .
Contoh
// std__unordered_map__unordered_map_local_iterator.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// inspect bucket containing 'a'
Mymap::local_iterator lit = c1.begin(c1.bucket('a'));
std::cout << " [" << lit->first << ", " << lit->second << "]";
return (0);
}
[c, 3] [b, 2] [a, 1]
[a, 1]
unordered_map::mapped_type
Jenis nilai yang dipetakan yang terkait dengan setiap kunci.
typedef Ty mapped_type;
Keterangan
Jenisnya adalah sinonim untuk parameter Tytemplat .
Contoh
// std__unordered_map__unordered_map_mapped_type.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// add a value and reinspect
Mymap::key_type key = 'd';
Mymap::mapped_type mapped = 4;
Mymap::value_type val = Mymap::value_type(key, mapped);
c1.insert(val);
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
[d, 4] [c, 3] [b, 2] [a, 1]
unordered_map::max_bucket_count
Mendapatkan jumlah maksimum wadah.
size_type max_bucket_count() const;
Keterangan
Fungsi anggota mengembalikan jumlah maksimum wadah yang saat ini diizinkan.
Contoh
// std__unordered_map__unordered_map_max_bucket_count.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// inspect current parameters
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_bucket_count() == "
<< c1.max_bucket_count() << std::endl;
std::cout << "max_load_factor() == "
<< c1.max_load_factor() << std::endl;
std::cout << std::endl;
// change max_load_factor and redisplay
c1.max_load_factor(0.10f);
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_bucket_count() == "
<< c1.max_bucket_count() << std::endl;
std::cout << "max_load_factor() == "
<< c1.max_load_factor() << std::endl;
std::cout << std::endl;
// rehash and redisplay
c1.rehash(100);
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_bucket_count() == "
<< c1.max_bucket_count() << std::endl;
std::cout << "max_load_factor() == "
<< c1.max_load_factor() << std::endl;
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
bucket_count() == 8
load_factor() == 0.375
max_bucket_count() == 8
max_load_factor() == 4
bucket_count() == 8
load_factor() == 0.375
max_bucket_count() == 8
max_load_factor() == 0.1
bucket_count() == 128
load_factor() == 0.0234375
max_bucket_count() == 128
max_load_factor() == 0.1
unordered_map::max_load_factor
Mendapatkan atau mengatur elemen maksimum per wadah.
float max_load_factor() const;
void max_load_factor(float factor);
Parameter
factor
Faktor beban maksimum baru.
Keterangan
Fungsi anggota pertama mengembalikan faktor beban maksimum yang disimpan. Fungsi anggota kedua menggantikan faktor beban maksimum yang disimpan dengan factor.
Contoh
// std__unordered_map__unordered_map_max_load_factor.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// inspect current parameters
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_bucket_count() == "
<< c1.max_bucket_count() << std::endl;
std::cout << "max_load_factor() == "
<< c1.max_load_factor() << std::endl;
std::cout << std::endl;
// change max_load_factor and redisplay
c1.max_load_factor(0.10f);
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_bucket_count() == "
<< c1.max_bucket_count() << std::endl;
std::cout << "max_load_factor() == "
<< c1.max_load_factor() << std::endl;
std::cout << std::endl;
// rehash and redisplay
c1.rehash(100);
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_bucket_count() == "
<< c1.max_bucket_count() << std::endl;
std::cout << "max_load_factor() == "
<< c1.max_load_factor() << std::endl;
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
bucket_count() == 8
load_factor() == 0.375
max_bucket_count() == 8
max_load_factor() == 4
bucket_count() == 8
load_factor() == 0.375
max_bucket_count() == 8
max_load_factor() == 0.1
bucket_count() == 128
load_factor() == 0.0234375
max_bucket_count() == 128
max_load_factor() == 0.1
unordered_map::max_size
Mendapatkan ukuran maksimum urutan yang dikontrol.
size_type max_size() const;
Keterangan
Fungsi anggota mengembalikan panjang urutan terpanjang yang dapat dikontrol objek.
Contoh
// std__unordered_map__unordered_map_max_size.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
std::cout << "max_size() == " << c1.max_size() << std::endl;
return (0);
}
max_size() == 536870911
unordered_map::operator[]
Menemukan atau menyisipkan elemen dengan kunci yang ditentukan.
Ty& operator[](const Key& keyval);
Ty& operator[](Key&& keyval);
Parameter
keyval
Nilai kunci untuk ditemukan atau disisipkan.
Tampilkan Nilai
Referensi ke nilai data elemen yang 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 di mana m[Key] = DataValue; adalah nilai DataValue elemen dengan nilai mapped_typeKey kunci .
Fungsi anggota menentukan iterator where sebagai nilai pengembalian .unordered_map::insert(unordered_map::value_type(keyval, Ty()) Untuk informasi lebih lanjut, lihat unordered_map::insert dan unordered_map::value_type. (Ini menyisipkan elemen dengan kunci yang ditentukan jika tidak ada elemen tersebut.) Kemudian mengembalikan referensi ke (*where).second.
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 insert dapat digunakan untuk menentukan apakah elemen dengan kunci tertentu sudah ada sebelum penyisipan.
Contoh
// std__unordered_map__unordered_map_operator_sub.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
#include <string>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// try to find and fail
std::cout << "c1['A'] == " << c1['A'] << std::endl;
// try to find and succeed
std::cout << "c1['a'] == " << c1['a'] << std::endl;
// redisplay contents
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// insert by moving key
std::unordered_map<string, int> c2;
std::string str("abc");
std::cout << "c2[std::move(str)] == " << c2[std::move(str)] << std::endl;
std::cout << "c2["abc"] == " << c2["abc"] << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
c1['A'] == 0
c1['a'] == 1
[c, 3] [b, 2] [A, 0] [a, 1]
c2[move(str)] == 0
c2["abc"] == 1
unordered_map::operator=
Mengganti elemen unordered_map ini menggunakan elemen dari unordered_map lain.
unordered_map& operator=(const unordered_map& right);
unordered_map& operator=(unordered_map&& right);
Parameter
right
Unordered_map tempat fungsi operator menetapkan konten.
Keterangan
Versi pertama menyalin semua elemen dari right ke unordered_map ini.
Versi kedua memindahkan semua elemen dari right ke unordered_map ini.
Elemen apa pun yang ada dalam unordered_map ini sebelum operator= eksekusi dibuang.
Contoh
// unordered_map_operator_as.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
int main( )
{
using namespace std;
unordered_map<int, int> v1, v2, v3;
unordered_map<int, int>::iterator iter;
v1.insert(pair<int, int>(1, 10));
cout << "v1 = " ;
for (iter = v1.begin(); iter != v1.end(); iter++)
cout << iter->second << " ";
cout << endl;
v2 = v1;
cout << "v2 = ";
for (iter = v2.begin(); iter != v2.end(); iter++)
cout << iter->second << " ";
cout << endl;
// move v1 into v2
v2.clear();
v2 = move(v1);
cout << "v2 = ";
for (iter = v2.begin(); iter != v2.end(); iter++)
cout << iter->second << " ";
cout << endl;
}
unordered_map::pointer
Jenis penunjuk ke elemen.
typedef Alloc::pointer pointer;
Keterangan
Jenis menjelaskan objek yang dapat berfungsi sebagai penunjuk ke elemen urutan yang dikontrol.
Contoh
// std__unordered_map__unordered_map_pointer.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::iterator it = c1.begin();
it != c1.end(); ++it)
{
Mymap::pointer p = &*it;
std::cout << " [" << p->first << ", " << p->second << "]";
}
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
unordered_map::reference
Jenis referensi ke elemen.
typedef Alloc::reference reference;
Keterangan
Jenis menjelaskan objek yang dapat berfungsi sebagai referensi ke elemen urutan yang dikontrol.
Contoh
// std__unordered_map__unordered_map_reference.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::iterator it = c1.begin();
it != c1.end(); ++it)
{
Mymap::reference ref = *it;
std::cout << " [" << ref.first << ", " << ref.second << "]";
}
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
unordered_map::rehash
Membangun kembali tabel hash.
void rehash(size_type nbuckets);
Parameter
nbuckets
Jumlah wadah yang diminta.
Keterangan
Fungsi anggota mengubah jumlah wadah menjadi setidaknya nbuckets dan membangun kembali tabel hash sesuai kebutuhan.
Contoh
// std__unordered_map__unordered_map_rehash.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// inspect current parameters
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_load_factor() == " << c1.max_load_factor() << std::endl;
std::cout << std::endl;
// change max_load_factor and redisplay
c1.max_load_factor(0.10f);
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_load_factor() == " << c1.max_load_factor() << std::endl;
std::cout << std::endl;
// rehash and redisplay
c1.rehash(100);
std::cout << "bucket_count() == " << c1.bucket_count() << std::endl;
std::cout << "load_factor() == " << c1.load_factor() << std::endl;
std::cout << "max_load_factor() == " << c1.max_load_factor() << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
bucket_count() == 8
load_factor() == 0.375
max_load_factor() == 4
bucket_count() == 8
load_factor() == 0.375
max_load_factor() == 0.1
bucket_count() == 128
load_factor() == 0.0234375
max_load_factor() == 0.1
unordered_map::size
Menghitung jumlah elemen.
size_type size() const;
Keterangan
Fungsi anggota mengembalikan panjang urutan yang dikontrol.
Contoh
// std__unordered_map__unordered_map_size.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// clear the container and reinspect
c1.clear();
std::cout << "size == " << c1.size() << std::endl;
std::cout << "empty() == " << std::boolalpha << c1.empty() << std::endl;
std::cout << std::endl;
c1.insert(Mymap::value_type('d', 4));
c1.insert(Mymap::value_type('e', 5));
// display contents " [e 5] [d 4]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
std::cout << "size == " << c1.size() << std::endl;
std::cout << "empty() == " << std::boolalpha << c1.empty() << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
size == 0
empty() == true
[e, 5] [d, 4]
size == 2
empty() == false
unordered_map::size_type
Jenis jarak yang tidak ditandatangani antara dua elemen.
typedef T2 size_type;
Keterangan
Jenis bilangan bulat yang tidak ditandatangani menjelaskan objek yang dapat mewakili panjang urutan yang dikontrol. Ini dijelaskan di sini sebagai sinonim untuk jenis T2yang ditentukan implementasi .
Contoh
// std__unordered_map__unordered_map_size_type.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
Mymap::size_type sz = c1.size();
std::cout << "size == " << sz << std::endl;
return (0);
}
size == 0
unordered_map::swap
Menukar isi dua kontainer.
void swap(unordered_map& right);
Parameter
right
Kontainer untuk ditukar.
Keterangan
Fungsi anggota menukar urutan terkontrol antara *this dan right. Jika unordered_map::get_allocator() == right.get_allocator(), lihat unordered_map::get_allocator, itu melakukannya dalam waktu konstan, itu melemparkan pengecualian hanya sebagai akibat dari menyalin objek sifat tersimpan dari jenis Tr, dan itu membatalkan tidak ada referensi, pointer, atau iterator yang menunjuk elemen dalam dua urutan terkontrol. Jika tidak, ia melakukan penugasan elemen dan panggilan konstruktor sebanding dengan jumlah elemen dalam dua urutan yang dikontrol.
Contoh
// std__unordered_map__unordered_map_swap.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
Mymap c2;
c2.insert(Mymap::value_type('d', 4));
c2.insert(Mymap::value_type('e', 5));
c2.insert(Mymap::value_type('f', 6));
c1.swap(c2);
// display contents " [f 6] [e 5] [d 4]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
swap(c1, c2);
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
[f, 6] [e, 5] [d, 4]
[c, 3] [b, 2] [a, 1]
unordered_map::unordered_map
Membuat objek kontainer.
unordered_map(const unordered_map& Right);
explicit unordered_map(
size_type Bucket_count = N0,
const Hash& Hash = Hash(),
const Comp& Comp = Comp(),
const Allocator& Al = Allocator());
unordered_map(unordered_map&& Right);
unordered_map(initializer_list<Type> IList);
unordered_map(initializer_list<Type> IList, size_type Bucket_count);
unordered_map(
initializer_list<Type> IList,
size_type Bucket_count,
const Hash& Hash);
unordered_map(
initializer_list<Type> IList,
size_type Bucket_count,
const Hash& Hash,
KeyEqual& equal);
unordered_map(
initializer_list<Type> IList,
size_type Bucket_count,
const Hash& Hash,
KeyEqual& Equal
const Allocator& Al);
template <class InIt>
unordered_map(
InputIterator First,
InputIterator Last,
size_type Bucket_count = N0,
const Hash& Hash = Hash(),
const Comp& Comp = Comp(),
const Allocator& Al = Alloc());
Parameter
Al
Objek alokator untuk disimpan.
Comp
Objek fungsi perbandingan untuk disimpan.
Hash
Objek fungsi hash untuk disimpan.
Bucket_count
Jumlah minimum wadah.
Right
Kontainer yang akan disalin.
First
Posisi elemen pertama yang akan disalin.
Last
Posisi tepat di luar elemen terakhir yang akan disalin.
IList
initializer_list yang berisi elemen yang akan disalin.
Keterangan
Konstruktor pertama menentukan salinan urutan yang dikendalikan oleh right. Konstruktor kedua menentukan urutan yang dikontrol kosong. Konstruktor ketiga menyisipkan urutan nilai [first, last)elemen . Konstruktor keempat menentukan salinan urutan dengan memindahkan right.
Semua konstruktor juga menginisialisasi beberapa nilai yang disimpan. Untuk konstruktor salinan, nilai diperoleh dari Right. Sebaliknya:
jumlah minimum wadah adalah argumen Bucket_count, jika ada; jika tidak, itu adalah nilai default yang dijelaskan di sini sebagai nilai N0yang ditentukan implementasi .
objek fungsi hash adalah argumen Hash, jika ada; jika tidak, itu Hash()adalah .
Objek fungsi perbandingan adalah argumen Comp, jika ada; jika tidak, itu Pred()adalah .
Objek alokator adalah argumen Al, jika ada; jika tidak, itu Alloc()adalah .
Contoh
// std__unordered_map__unordered_map_construct.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
#include <initializer_list>
using namespace std;
using Mymap = unordered_map<char, int>;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (const auto& c : c1) {
cout << " [" << c.first << ", " << c.second << "]";
}
cout << endl;
Mymap c2(8,
hash<char>(),
equal_to<char>(),
allocator<pair<const char, int> >());
c2.insert(Mymap::value_type('d', 4));
c2.insert(Mymap::value_type('e', 5));
c2.insert(Mymap::value_type('f', 6));
// display contents " [f 6] [e 5] [d 4]"
for (const auto& c : c2) {
cout << " [" << c.first << ", " << c.second << "]";
}
cout << endl;
Mymap c3(c1.begin(),
c1.end(),
8,
hash<char>(),
equal_to<char>(),
allocator<pair<const char, int> >());
// display contents " [c 3] [b 2] [a 1]"
for (const auto& c : c3) {
cout << " [" << c.first << ", " << c.second << "]";
}
cout << endl;
Mymap c4(move(c3));
// display contents " [c 3] [b 2] [a 1]"
for (const auto& c : c4) {
cout << " [" << c.first << ", " << c.second << "]";
}
cout << endl;
cout << endl;
// Construct with an initializer_list
unordered_map<int, char> c5({ { 5, 'g' }, { 6, 'h' }, { 7, 'i' }, { 8, 'j' } });
for (const auto& c : c5) {
cout << " [" << c.first << ", " << c.second << "]";
}
cout << endl;
// Initializer_list plus size
unordered_map<int, char> c6({ { 5, 'g' }, { 6, 'h' }, { 7, 'i' }, { 8, 'j' } }, 4);
for (const auto& c : c1) {
cout << " [" << c.first << ", " << c.second << "]";
}
cout << endl;
cout << endl;
// Initializer_list plus size and hash
unordered_map<int, char, hash<char>> c7(
{ { 5, 'g' }, { 6, 'h' }, { 7, 'i' }, { 8, 'j' } },
4,
hash<char>()
);
for (const auto& c : c1) {
cout << " [" << c.first << ", " << c.second << "]";
}
cout << endl;
// Initializer_list plus size, hash, and key_equal
unordered_map<int, char, hash<char>, equal_to<char>> c8(
{ { 5, 'g' }, { 6, 'h' }, { 7, 'i' }, { 8, 'j' } },
4,
hash<char>(),
equal_to<char>()
);
for (const auto& c : c1) {
cout << " [" << c.first << ", " << c.second << "]";
}
cout << endl;
// Initializer_list plus size, hash, key_equal, and allocator
unordered_map<int, char, hash<char>, equal_to<char>> c9(
{ { 5, 'g' }, { 6, 'h' }, { 7, 'i' }, { 8, 'j' } },
4,
hash<char>(),
equal_to<char>(),
allocator<pair<const char, int> >()
);
for (const auto& c : c1) {
cout << " [" << c.first << ", " << c.second << "]";
}
cout << endl;
}
[a, 1] [b, 2] [c, 3]
[d, 4] [e, 5] [f, 6]
[a, 1] [b, 2] [c, 3]
[a, 1] [b, 2] [c, 3]
[5, g] [6, h] [7, i] [8, j]
[a, 1] [b, 2] [c, 3]
[a, 1] [b, 2] [c, 3]
[a, 1] [b, 2] [c, 3]
[a, 1] [b, 2] [c, 3]
unordered_map::value_type
Jenis elemen.
typedef std::pair<const Key, Ty> value_type;
Keterangan
Jenis ini menjelaskan elemen urutan yang dikontrol.
Contoh
// std__unordered_map__unordered_map_value_type.cpp
// compile with: /EHsc
#include <unordered_map>
#include <iostream>
typedef std::unordered_map<char, int> Mymap;
int main()
{
Mymap c1;
c1.insert(Mymap::value_type('a', 1));
c1.insert(Mymap::value_type('b', 2));
c1.insert(Mymap::value_type('c', 3));
// display contents " [c 3] [b 2] [a 1]"
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
// add a value and reinspect
Mymap::key_type key = 'd';
Mymap::mapped_type mapped = 4;
Mymap::value_type val = Mymap::value_type(key, mapped);
c1.insert(val);
for (Mymap::const_iterator it = c1.begin();
it != c1.end(); ++it)
std::cout << " [" << it->first << ", " << it->second << "]";
std::cout << std::endl;
return (0);
}
[c, 3] [b, 2] [a, 1]
[d, 4] [c, 3] [b, 2] [a, 1]
Lihat juga
<unordered_map>
Keamanan Utas di Pustaka Standar C++