Bagikan melalui


unordered_map Kelas

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++