Bagikan melalui


hash_map Kelas

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Menyimpan dan mengambil data dengan cepat dari koleksi di mana setiap elemen adalah pasangan yang memiliki kunci pengurutan yang nilainya unik dan nilai data terkait.

Sintaks

template <class Key,
    class Type,
    class Traits=hash_compare<Key, less<Key>>,
    class Allocator=allocator<pair <const Key, Type>>>
class hash_map

Parameter

Key
Jenis data kunci yang akan disimpan di hash_map.

Type
Jenis data elemen yang akan disimpan di hash_map.

Traits
Jenis yang mencakup dua objek fungsi, salah satu kelas membandingkan mampu membandingkan dua nilai elemen sebagai kunci pengurutan untuk menentukan urutan relatifnya dan fungsi hash yang merupakan nilai kunci pemetaan predikat unary dari elemen dengan bilangan bulat jenis size_tyang tidak ditandatangani. Argumen ini bersifat opsional, dan hash_compare<Key, less<Key>> merupakan nilai default.

Allocator
Jenis yang mewakili objek alokator tersimpan yang merangkum detail tentang hash_mapalokasi dan alokasi memori . Argumen ini bersifat opsional, dan nilai defaultnya adalah allocator<pair <const Key, Type>>.

Keterangan

adalah hash_map :

  • Kontainer asosiatif, yang merupakan kontainer ukuran variabel yang mendukung pengambilan nilai elemen yang efisien berdasarkan nilai kunci terkait.

  • Dapat dibalik, karena menyediakan iterator dua arah untuk mengakses elemennya.

  • Di-hash, karena elemennya dikelompokkan ke dalam wadah berdasarkan nilai fungsi hash yang diterapkan ke nilai kunci elemen.

  • Unik dalam arti bahwa setiap elemennya harus memiliki kunci yang unik.

  • Kontainer asosiatif pasangan, karena nilai data elemennya berbeda dari nilai kuncinya.

  • Templat kelas, karena fungsionalitas yang disediakannya umum dan sangat independen dari jenis data tertentu yang terkandung sebagai elemen atau kunci. Jenis data yang akan digunakan untuk elemen dan kunci, sebagai gantinya, ditentukan sebagai parameter dalam templat kelas bersama dengan fungsi perbandingan dan alokator.

Keuntungan utama hashing daripada pengurutan adalah efisiensi yang lebih besar; hashing yang berhasil melakukan penyisipan, penghapusan, dan ditemukan dalam waktu rata-rata konstan dibandingkan dengan waktu yang sebanding dengan logaritma jumlah elemen dalam kontainer untuk teknik pengurutan. Nilai elemen dalam hash_map, tetapi bukan nilai kunci terkait, dapat diubah secara langsung. Sebaliknya, nilai kunci yang terkait dengan elemen lama harus dihapus dan nilai kunci baru yang terkait dengan elemen baru yang disisipkan.

Pilihan jenis kontainer harus didasarkan secara umum pada jenis pencarian dan penyisipan yang diperlukan oleh aplikasi. Kontainer asosiatif yang di-hash dioptimalkan untuk operasi pencarian, penyisipan, dan penghapusan. Fungsi anggota yang secara eksplisit mendukung operasi ini efisien ketika digunakan dengan fungsi hash yang dirancang dengan baik, melakukannya dalam waktu yang rata-rata konstanta dan tidak tergantung pada jumlah elemen dalam kontainer. Fungsi hash yang dirancang dengan baik menghasilkan distribusi nilai hash yang seragam dan meminimalkan jumlah tabrakan, di mana tabrakan dikatakan terjadi ketika nilai kunci yang berbeda dipetakan ke dalam nilai hash yang sama. Dalam kasus terburuk, dengan kemungkinan terburuk fungsi hash, jumlah operasi sebanding dengan jumlah elemen dalam urutan (waktu linier).

hash_map harus menjadi kontainer pilihan asosiatif ketika kondisi mengaitkan nilai dengan kuncinya dipenuhi oleh aplikasi. Model untuk jenis struktur ini adalah daftar yang diurutkan dari kata kunci yang terjadi secara unik dengan nilai string terkait yang menyediakan definisi, misalnya. Jika, sebaliknya, kata-kata memiliki lebih dari satu definisi yang benar, sehingga kunci tidak unik, maka hash_multimap akan menjadi kontainer pilihan. Jika, di sisi lain, hanya daftar kata yang disimpan, maka akan hash_set menjadi kontainer yang benar. Jika beberapa kemunculan kata-kata diizinkan, maka hash_multiset akan menjadi struktur kontainer yang sesuai.

Urutan hash_map yang dikontrolnya dengan memanggil objek hash Traits kelas value_compareyang disimpan . Objek tersimpan ini dapat diakses dengan memanggil fungsi key_companggota . Objek fungsi semacam itu harus berulah sama dengan objek kelas hash_compare<Key, less<Key>>. Secara khusus, untuk semua nilai Key jenis Key, panggilan Traits(Key) menghasilkan distribusi nilai jenis size_t. Untuk informasi selengkapnya, lihat hash_compare .

Secara umum, elemen-elemen hanya perlu kurang dari sebanding untuk menetapkan urutan ini: sehingga, mengingat dua elemen, mungkin ditentukan bahwa elemen tersebut setara (dalam arti tidak kurang dari yang lain) atau yang satu itu kurang dari yang lain. Ini menghasilkan pengurutan antara elemen yang tidak setara. Pada catatan yang lebih teknis, fungsi perbandingan adalah predikat biner yang menginduksi urutan lemah yang ketat dalam arti matematika standar. Predikat biner f(x y) adalah objek fungsi yang memiliki dua objek x argumen dan y dan nilai true pengembalian atau false. Pemesanan yang diberlakukan pada hash_map adalah urutan lemah yang ketat jika predikat biner tidak fleksibel, antisimmetris, dan transitif dan jika kesetaraan transitif, di mana dua objek x dan y didefinisikan setara ketika f(x, y) dan f(y, x) adalah false. Jika kondisi kesetaraan yang lebih kuat antara kunci menggantikan kesetaraan, maka pengurutan menjadi total (dalam arti bahwa semua elemen diurutkan sehubungan satu sama lain) dan kunci yang cocok akan tidak dapat dicermati satu sama lain.

Urutan elemen aktual dalam urutan terkontrol tergantung pada fungsi hash, fungsi pemesanan, dan ukuran tabel hash saat ini yang disimpan dalam objek kontainer. Anda tidak dapat menentukan ukuran tabel hash saat ini, sehingga Anda tidak dapat secara umum memprediksi urutan elemen dalam urutan yang dikontrol. Menyisipkan elemen tidak membatalkan iterator, dan menghapus elemen hanya membatalkan iterator yang secara khusus menunjuk elemen yang dihapus.

Iterator yang disediakan oleh hash_map kelas adalah iterator dua arah, tetapi anggota kelas berfungsi insert dan hash_map memiliki versi yang mengambil sebagai parameter templat iterator input yang lebih lemah, yang persyaratan fungsionalitasnya lebih minimal daripada yang dijamin oleh kelas iterator dua arah. Konsep iterator yang berbeda membentuk keluarga yang terkait dengan penyempurnaan dalam fungsionalitasnya. Setiap konsep iterator memiliki serangkaian persyaratannya sendiri, dan algoritma yang bekerja dengan mereka harus membatasi asumsi mereka terhadap persyaratan yang disediakan oleh jenis iterator tersebut. Mungkin diasumsikan bahwa iterator input dapat didereferensikan untuk merujuk ke beberapa objek dan bahwa itu mungkin akan dinaikkan ke iterator berikutnya dalam urutan. Ini adalah serangkaian fungsionalitas minimal, tetapi cukup untuk dapat berbicara dengan bermakna tentang berbagai iterator [First, Last) dalam konteks fungsi anggota kelas.

Konstruktor

Konstruktor Deskripsi
hash_map Membangun hash_map yang kosong atau yang merupakan salinan dari semua atau sebagian dari beberapa lainnya hash_map.

Typedefs

Nama jenis Deskripsi
allocator_type Jenis yang mewakili allocator kelas untuk hash_map objek.
const_iterator Jenis yang menyediakan iterator dua arah yang dapat membaca const elemen di hash_map.
const_pointer Jenis yang menyediakan penunjuk ke const elemen dalam hash_map.
const_reference Jenis yang menyediakan referensi ke elemen yang const disimpan dalam hash_map untuk membaca dan melakukan const operasi.
const_reverse_iterator Jenis yang menyediakan iterator dua arah yang dapat membaca elemen apa pun const di hash_map.
difference_type Jenis bilangan bulat bertanda tangan yang dapat digunakan untuk mewakili jumlah elemen hash_map dalam rentang antara elemen yang diarahkan oleh iterator.
iterator Jenis yang menyediakan iterator dua arah yang dapat membaca atau memodifikasi elemen apa pun dalam hash_map.
key_compare Jenis yang menyediakan objek fungsi yang dapat membandingkan dua kunci pengurutan untuk menentukan urutan relatif dua elemen di hash_map.
key_type Jenis menjelaskan objek kunci pengurutan yang merupakan setiap elemen dari hash_map.
mapped_type Jenis yang mewakili jenis data yang disimpan dalam hash_map.
pointer Jenis yang menyediakan penunjuk ke elemen dalam hash_map.
reference Jenis yang menyediakan referensi ke elemen yang disimpan dalam hash_map.
reverse_iterator Jenis yang menyediakan iterator dua arah yang dapat membaca atau memodifikasi elemen dalam terbalik hash_map.
size_type Jenis bilangan bulat yang tidak ditandatangani yang dapat mewakili jumlah elemen dalam hash_map.
value_type Jenis yang menyediakan objek fungsi yang dapat membandingkan dua elemen sebagai kunci pengurutan untuk menentukan urutan relatifnya di hash_map.

Fungsi anggota

Fungsi anggota Deskripsi
at Menemukan elemen dalam hash_map dengan nilai kunci tertentu.
begin Mengembalikan iterator yang menangani elemen pertama di hash_map.
cbegin Mengembalikan iterator const yang menangani elemen pertama di hash_map.
cend Mengembalikan iterator const yang membahas lokasi yang menggantikan elemen terakhir dalam hash_map.
clear Menghapus semua elemen dari hash_map.
count Mengembalikan jumlah elemen dalam kunci hash_map yang cocok dengan kunci yang ditentukan parameter.
crbegin Mengembalikan iterator yang const menangani elemen pertama dalam terbalik hash_map.
crend Mengembalikan iterator const yang membahas lokasi yang menggantikan elemen terakhir dalam terbalik hash_map.
emplace Menyisipkan elemen yang dibangun di tempat ke dalam hash_map.
emplace_hint Menyisipkan elemen yang dibangun di tempat ke dalam hash_map, dengan petunjuk penempatan.
empty Menguji apakah kosong hash_map .
end Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam hash_map.
equal_range Mengembalikan sepasang iterator, masing-masing, ke elemen pertama dalam hash_map dengan kunci yang lebih besar dari kunci yang ditentukan dan ke elemen pertama di hash_map dengan kunci yang sama dengan atau lebih besar dari kunci.
erase Menghapus elemen atau rentang elemen dalam dari posisi tertentu hash_map
find Mengembalikan iterator yang membahas lokasi elemen dalam hash_map yang memiliki kunci yang setara dengan kunci yang ditentukan.
get_allocator Mengembalikan salinan objek yang allocator digunakan untuk membuat hash_map.
insert Menyisipkan elemen atau rentang elemen ke dalam hash_map.
key_comp Mengembalikan iterator ke elemen pertama dalam hash_map dengan nilai kunci yang sama dengan atau lebih besar dari kunci yang ditentukan.
lower_bound Mengembalikan iterator ke elemen pertama dalam hash_map dengan nilai kunci yang sama dengan atau lebih besar dari kunci yang ditentukan.
max_size Mengembalikan panjang hash_mapmaksimum .
rbegin Mengembalikan iterator yang menangani elemen pertama dalam terbalik hash_map.
rend Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam terbalik hash_map.
size Mengembalikan jumlah elemen dalam hash_map.
swap Menukar elemen dua hash_maps.
upper_bound Mengembalikan iterator ke elemen pertama dalam hash_map yang dengan nilai kunci yang lebih besar dari kunci yang ditentukan.
value_comp Mengambil salinan objek perbandingan yang digunakan untuk mengurutkan nilai elemen dalam hash_map.

Operator

Pengoperasi Deskripsi
operator[] Menyisipkan elemen ke dalam hash_map dengan nilai kunci tertentu.
hash_map::operator= Mengganti elemen hash_map dengan salinan dari yang lain hash_map.

Persyaratan

Header :<hash_map>

kumpulan nama XML: stdext

hash_map::allocator_type

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis yang mewakili kelas alokator untuk objek hash_map.

typedef list<typename Traits::value_type, typename Traits::allocator_type>::allocator_type allocator_type;

Contoh

Lihat contoh untuk get_allocator contoh menggunakan allocator_type.

hash_map::at

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Menemukan elemen dalam hash_map dengan nilai kunci tertentu.

Type& at(const Key& key);

const Type& at(const Key& key) const;

Parameter

key
Nilai kunci elemen 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 Kelas.

Contoh

// hash_map_at.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   typedef pair <const int, int> cInt2Int;
   hash_map <int, int> hm1;

   // Insert data values
   hm1.insert ( cInt2Int ( 1, 10 ) );
   hm1.insert ( cInt2Int ( 2, 20 ) );
   hm1.insert ( cInt2Int ( 3, 30 ) );

   cout  << "The values of the mapped elements are:";
   for ( int i = 1 ; i <= hm1.size() ; i++ )
      cout << " " << hm1.at(i);
   cout << "." << endl;
}

hash_map::begin

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan iterator yang menangani elemen pertama di hash_map.

const_iterator begin() const;

iterator begin();

Tampilkan Nilai

Iterator dua arah yang membahas elemen pertama di hash_map atau lokasi berhasil kosong hash_map.

Contoh

// hash_map_begin.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;

   hash_map <int, int> :: iterator hm1_Iter;
   hash_map <int, int> :: const_iterator hm1_cIter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 0, 0 ) );
   hm1.insert ( Int_Pair ( 1, 1 ) );
   hm1.insert ( Int_Pair ( 2, 4 ) );

   hm1_cIter = hm1.begin ( );
   cout << "The first element of hm1 is "
        << hm1_cIter -> first << "." << endl;

   hm1_Iter = hm1.begin ( );
   hm1.erase ( hm1_Iter );

   // The following 2 lines would err because the iterator is const
   // hm1_cIter = hm1.begin ( );
   // hm1.erase ( hm1_cIter );

   hm1_cIter = hm1.begin( );
   cout << "The first element of hm1 is now "
        << hm1_cIter -> first << "." << endl;
}
The first element of hm1 is 0.
The first element of hm1 is now 1.

hash_map::cbegin

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan iterator const yang menangani elemen pertama di hash_map.

const_iterator cbegin() const;

Tampilkan Nilai

Iterator dua arah const yang membahas elemen pertama di hash_map atau lokasi berhasil kosong hash_map.

Contoh

// hash_map_cbegin.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;

   hash_map <int, int> :: const_iterator hm1_cIter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 2, 4 ) );

   hm1_cIter = hm1.cbegin ( );
   cout << "The first element of hm1 is "
        << hm1_cIter -> first << "." << endl;
   }
The first element of hm1 is 2.

hash_map::cend

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan iterator const yang membahas lokasi yang menggantikan elemen terakhir dalam hash_map.

const_iterator cend() const;

Tampilkan Nilai

Iterator dua arah const yang membahas lokasi yang menggantikan elemen terakhir dalam hash_map. hash_map Jika kosong, maka hash_map::cend == hash_map::begin.

Keterangan

cend digunakan untuk menguji apakah iterator telah mencapai akhir hash_map.

Nilai yang dikembalikan oleh cend tidak boleh didereferensikan.

Contoh

// hash_map_cend.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;

   hash_map <int, int> :: const_iterator hm1_cIter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 3, 30 ) );

   hm1_cIter = hm1.cend( );
   hm1_cIter--;
   cout << "The value of last element of hm1 is "
        << hm1_cIter -> second << "." << endl;
   }
The value of last element of hm1 is 30.

hash_map::clear

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Menghapus semua elemen dari hash_map.

void clear();

Contoh

Contoh berikut menunjukkan penggunaan hash_map::clear fungsi anggota.

// hash_map_clear.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
    using namespace std;
    using namespace stdext;
    hash_map<int, int> hm1;
    hash_map<int, int>::size_type i;
    typedef pair<int, int> Int_Pair;

    hm1.insert(Int_Pair(1, 1));
    hm1.insert(Int_Pair(2, 4));

    i = hm1.size();
    cout << "The size of the hash_map is initially "
         << i << "." << endl;

    hm1.clear();
    i = hm1.size();
    cout << "The size of the hash_map after clearing is "
         << i << "." << endl;
}
The size of the hash_map is initially 2.
The size of the hash_map after clearing is 0.

hash_map::const_iterator

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis yang menyediakan iterator dua arah yang dapat membaca const elemen di hash_map.

typedef list<typename Traits::value_type, typename Traits::allocator_type>::const_iterator const_iterator;

Keterangan

Jenis const_iterator tidak dapat digunakan untuk mengubah nilai elemen.

Yang const_iterator ditentukan oleh hash_map poin ke elemen yang merupakan objek dari , yaitu jenis value_typepair< const Key, Type >, yang anggota pertamanya adalah kunci untuk elemen dan yang anggota keduanya adalah datum yang dipetakan yang dipegang oleh elemen .

Untuk mendereferensikan const_iteratorcIter menunjuk ke elemen dalam hash_map, gunakan -> operator .

Untuk mengakses nilai kunci untuk elemen , gunakan cIter->first, yang setara dengan (*cIter).first. Untuk mengakses nilai datum yang dipetakan untuk elemen , gunakan cIter->second, yang setara dengan (*cIter).second.

Contoh

Lihat contoh untuk begin contoh menggunakan const_iterator.

hash_map::const_pointer

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis yang menyediakan penunjuk ke const elemen dalam hash_map.

typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::const_pointer const_pointer;

Keterangan

Jenis const_pointer tidak dapat digunakan untuk mengubah nilai elemen.

Dalam kebanyakan kasus, harus iterator digunakan untuk mengakses elemen dalam hash_map objek.

hash_map::const_reference

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis yang menyediakan referensi ke elemen yang const disimpan dalam hash_map untuk membaca dan melakukan const operasi.

typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::const_reference const_reference;

Contoh

// hash_map_const_ref.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map<int, int> hm1;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 1, 10 ) );
   hm1.insert ( Int_Pair ( 2, 20 ) );

   // Declare and initialize a const_reference &Ref1
   // to the key of the first element
   const int &Ref1 = ( hm1.begin( ) -> first );

   // The following line would cause an error because the
   // non-const_reference cannot be used to access the key
   // int &Ref1 = ( hm1.begin( ) -> first );

   cout << "The key of the first element in the hash_map is "
        << Ref1 << "." << endl;

   // Declare and initialize a reference &Ref2
   // to the data value of the first element
   int &Ref2 = ( hm1.begin( ) -> second );

   cout << "The data value of the first element in the hash_map is "
        << Ref2 << "." << endl;
}
The key of the first element in the hash_map is 1.
The data value of the first element in the hash_map is 10.

hash_map::const_reverse_iterator

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis yang menyediakan iterator dua arah yang dapat membaca elemen apa pun const di hash_map.

typedef list<typename Traits::value_type, typename Traits::allocator_type>::const_reverse_iterator const_reverse_iterator;

Keterangan

Jenis const_reverse_iterator tidak dapat memodifikasi nilai elemen dan digunakan untuk melakukan iterasi melalui secara hash_map terbalik.

Yang const_reverse_iterator ditentukan oleh hash_map poin ke elemen yang merupakan objek dari , yaitu jenis value_typepair< const Key, Type >, yang anggota pertamanya adalah kunci untuk elemen dan yang anggota keduanya adalah datum yang dipetakan yang dipegang oleh elemen .

Untuk mendereferensikan const_reverse_iteratorcrIter menunjuk ke elemen dalam hash_map, gunakan -> operator .

Untuk mengakses nilai kunci untuk elemen , gunakan crIter->first, yang setara dengan (*crIter).first. Untuk mengakses nilai datum yang dipetakan untuk elemen , gunakan crIter->second, yang setara dengan (*crIter).first.

Contoh

Lihat contoh untuk rend contoh cara mendeklarasikan dan menggunakan const_reverse_iterator.

hash_map::count

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan jumlah elemen dalam kunci hash_map yang cocok dengan kunci yang ditentukan parameter.

size_type count(const Key& key) const;

Parameter

key
Nilai kunci elemen yang akan dicocokkan dari hash_map.

Tampilkan Nilai

1 jika hash_map berisi elemen yang kunci pengurutannya cocok dengan kunci parameter; 0 jika hash_map tidak berisi elemen dengan kunci yang cocok.

Keterangan

Fungsi anggota mengembalikan jumlah elemen x dalam rentang

lower_bound(key), upper_bound(key)

yang 0 atau 1 dalam kasus hash_map, yang merupakan kontainer asosiatif unik.

Contoh

Contoh berikut menunjukkan penggunaan hash_map::count fungsi anggota.

// hash_map_count.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main()
{
    using namespace std;
    using namespace stdext;
    hash_map<int, int> hm1;
    hash_map<int, int>::size_type i;
    typedef pair<int, int> Int_Pair;

    hm1.insert(Int_Pair (1, 1));
    hm1.insert(Int_Pair (2, 1));
    hm1.insert(Int_Pair (1, 4));
    hm1.insert(Int_Pair (2, 1));

    // Keys must be unique in hash_map, so duplicates are ignored
    i = hm1.count(1);
    cout << "The number of elements in hm1 with a sort key of 1 is: "
         << i << "." << endl;

    i = hm1.count(2);
    cout << "The number of elements in hm1 with a sort key of 2 is: "
         << i << "." << endl;

    i = hm1.count(3);
    cout << "The number of elements in hm1 with a sort key of 3 is: "
         << i << "." << endl;
}
The number of elements in hm1 with a sort key of 1 is: 1.
The number of elements in hm1 with a sort key of 2 is: 1.
The number of elements in hm1 with a sort key of 3 is: 0.

hash_map::crbegin

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan iterator yang const menangani elemen pertama dalam terbalik hash_map.

const_reverse_iterator crbegin() const;

Tampilkan Nilai

Iterator const dua arah terbalik yang membahas elemen pertama dalam terbalik hash_map atau mengatasi apa yang telah menjadi elemen terakhir dalam yang tidak terbalik hash_map.

Keterangan

crbegin digunakan dengan terbalik hash_map seperti begin yang digunakan dengan hash_map.

Dengan nilai crbeginpengembalian , hash_map objek tidak dapat dimodifikasi.

crbegin dapat digunakan untuk melakukan iterasi melalui mundur hash_map .

Contoh

// hash_map_crbegin.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;

   hash_map <int, int> :: const_reverse_iterator hm1_crIter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 3, 30 ) );

   hm1_crIter = hm1.crbegin( );
   cout << "The first element of the reversed hash_map hm1 is "
        << hm1_crIter -> first << "." << endl;
}
The first element of the reversed hash_map hm1 is 3.

hash_map::crend

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan iterator const yang membahas lokasi yang menggantikan elemen terakhir dalam terbalik hash_map.

const_reverse_iterator crend() const;

Tampilkan Nilai

Iterator const dua arah terbalik yang membahas lokasi yang menggantikan elemen terakhir dalam terbalik hash_map (lokasi yang telah mendahului elemen pertama dalam yang tidak terbalik hash_map).

Keterangan

crend digunakan dengan terbalik hash_map seperti hash_map::end yang digunakan dengan hash_map.

Dengan nilai crendpengembalian , hash_map objek tidak dapat dimodifikasi.

crend dapat digunakan untuk menguji apakah iterator terbalik telah mencapai akhir hash_map.

Nilai yang dikembalikan oleh crend tidak boleh didereferensikan.

Contoh

// hash_map_crend.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;

   hash_map <int, int> :: const_reverse_iterator hm1_crIter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 3, 30 ) );

   hm1_crIter = hm1.crend( );
   hm1_crIter--;
   cout << "The last element of the reversed hash_map hm1 is "
        << hm1_crIter -> first << "." << endl;
}
The last element of the reversed hash_map hm1 is 3.

hash_map::difference_type

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis bilangan bulat bertanda tangan yang dapat digunakan untuk mewakili jumlah elemen hash_map dalam rentang antara elemen yang diarahkan oleh iterator.

typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::difference_type difference_type;

Contoh

// hash_map_diff_type.cpp
// compile with: /EHsc
#include <iostream>
#include <hash_map>
#include <algorithm>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 2, 20 ) );
   hm1.insert ( Int_Pair ( 1, 10 ) );
   hm1.insert ( Int_Pair ( 3, 20 ) );

   // The following won't insert, because map keys are unique
   hm1.insert ( Int_Pair ( 2, 30 ) );

   hash_map <int, int>::iterator hm1_Iter, hm1_bIter, hm1_eIter;
   hm1_bIter = hm1.begin( );
   hm1_eIter = hm1.end( );

   // Count the number of elements in a hash_map
   hash_map <int, int>::difference_type  df_count = 0;
   hm1_Iter = hm1.begin( );
   while ( hm1_Iter != hm1_eIter)
   {
      df_count++;
      hm1_Iter++;
   }

   cout << "The number of elements in the hash_map hm1 is: "
        << df_count << "." << endl;

   cout  << "The keys of the mapped elements are:";
   for ( hm1_Iter= hm1.begin( ) ; hm1_Iter!= hm1.end( ) ;
         hm1_Iter++)
      cout << " " << hm1_Iter-> first;
   cout << "." << endl;

   cout  << "The values of the mapped elements are:";
   for ( hm1_Iter= hm1.begin( ) ; hm1_Iter!= hm1.end( ) ;
         hm1_Iter++)
      cout << " " << hm1_Iter-> second;
   cout << "." << endl;
}
The number of elements in the hash_map hm1 is: 3.
The keys of the mapped elements are: 1 2 3.
The values of the mapped elements are: 10 20 20.

hash_map::emplace

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Menyisipkan elemen yang dibangun di tempat ke dalam hash_map.

template <class ValTy>
pair <iterator, bool>
emplace(
    ValTy&& val);

Parameter

val
Nilai yang digunakan untuk memindahkan konstruksi elemen untuk dimasukkan ke dalam kecuali sudah berisi elemen tersebut hash_maphash_map (atau, lebih umum, elemen yang kuncinya diurutkan secara setara).

Tampilkan Nilai

Fungsi emplace anggota mengembalikan pasangan yang komponennya bool mengembalikan true jika penyisipan dibuat dan false jika hash_map sudah berisi elemen yang kuncinya memiliki nilai yang setara dalam pengurutan, dan yang komponennya iterator mengembalikan alamat tempat elemen baru dimasukkan atau di mana elemen sudah berada.

Untuk mengakses iterator komponen 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, dan untuk mendereferensikannya, gunakan *(pr.second).

Keterangan

Elemen hash_map::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.

Contoh

// hash_map_emplace.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>
#include <string>

int main()
{
    using namespace std;
    using namespace stdext;
    hash_map<int, string> hm1;
    typedef pair<int, string> is1(1, "a");

    hm1.emplace(move(is1));
    cout << "After the emplace insertion, hm1 contains:" << endl
      << " " << hm1.begin()->first
      << " => " << hm1.begin()->second
      << endl;
}
After the emplace insertion, hm1 contains:
1 => a

hash_map::emplace_hint

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Menyisipkan elemen yang dibangun di tempat ke dalam hash_map, dengan petunjuk penempatan.

template <class ValTy>
iterator emplace_hint(
    const_iterator _Where,
    ValTy&& val);

Parameter

val
Nilai yang digunakan untuk memindahkan konstruksi elemen untuk dimasukkan ke dalam kecuali sudah berisi elemen tersebut hash_maphash_map (atau, lebih umum, elemen yang kuncinya diurutkan secara setara).

c
Petunjuk mengenai tempat untuk mulai mencari titik penyisipan yang benar.

Tampilkan Nilai

Fungsi hash_multimap::emplace anggota mengembalikan iterator yang menunjuk ke posisi di mana elemen baru dimasukkan ke dalam hash_map, atau di mana elemen yang ada dengan pengurutan yang setara berada.

Keterangan

Elemen hash_map::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.

Penyisipan dapat terjadi dalam waktu konstanta _Whereyang diamortisasi, alih-alih waktu logaritma, jika titik penyisipan segera mengikuti .

Contoh

// hash_map_emplace_hint.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>
#include <string>

int main()
{
    using namespace std;
    using namespace stdext;
    hash_map<int, string> hm1;
    typedef pair<int, string> is1(1, "a");

    hm1.emplace(hm1.begin(), move(is1));
    cout << "After the emplace, hm1 contains:" << endl
      << " " << hm1.begin()->first
      << " => " << hm1.begin()->second
      << endl;
}
After the emplace insertion, hm1 contains:
1 => a

hash_map::empty

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Menguji apakah kosong hash_map .

bool empty() const;

Tampilkan Nilai

true hash_map jika kosong; false jika hash_map tidak ada.

Contoh

// hash_map_empty.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1, hm2;

   typedef pair <int, int> Int_Pair;
   hm1.insert ( Int_Pair ( 1, 1 ) );

   if ( hm1.empty( ) )
      cout << "The hash_map hm1 is empty." << endl;
   else
      cout << "The hash_map hm1 is not empty." << endl;

   if ( hm2.empty( ) )
      cout << "The hash_map hm2 is empty." << endl;
   else
      cout << "The hash_map hm2 is not empty." << endl;
}
The hash_map hm1 is not empty.
The hash_map hm2 is empty.

hash_map::end

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam hash_map.

const_iterator end() const;

iterator end();

Tampilkan Nilai

Iterator dua arah yang membahas lokasi yang menggantikan elemen terakhir dalam hash_map. hash_map Jika kosong, maka hash_map::end == hash_map::begin.

Keterangan

end digunakan untuk menguji apakah iterator telah mencapai akhir hash_map.

Nilai yang dikembalikan oleh end tidak boleh didereferensikan.

Contoh

// hash_map_end.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;

   hash_map <int, int> :: iterator hm1_Iter;
   hash_map <int, int> :: const_iterator hm1_cIter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 1, 10 ) );
   hm1.insert ( Int_Pair ( 2, 20 ) );
   hm1.insert ( Int_Pair ( 3, 30 ) );

   hm1_cIter = hm1.end( );
   hm1_cIter--;
   cout << "The value of last element of hm1 is "
        << hm1_cIter -> second << "." << endl;

   hm1_Iter = hm1.end( );
   hm1_Iter--;
   hm1.erase ( hm1_Iter );

   // The following 2 lines would err because the iterator is const
   // hm1_cIter = hm1.end ( );
   // hm1_cIter--;
   // hm1.erase ( hm1_cIter );

   hm1_cIter = hm1.end( );
   hm1_cIter--;
   cout << "The value of last element of hm1 is now "
        << hm1_cIter -> second << "." << endl;
}
The value of last element of hm1 is 30.
The value of last element of hm1 is now 20.

hash_map::equal_range

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan sepasang iterator masing-masing ke elemen pertama dalam hash_map dengan kunci yang lebih besar dari kunci yang ditentukan dan ke elemen pertama di hash_map dengan kunci yang sama dengan atau lebih besar dari kunci.

pair <const_iterator, const_iterator> equal_range (const Key& key) const;

pair <iterator, iterator> equal_range (const Key& key);

Parameter

key
Nilai kunci argumen yang akan dibandingkan dengan kunci pengurutan elemen dari yang hash_map sedang dicari.

Tampilkan Nilai

Sepasang iterator sehingga yang pertama adalah lower_bound kunci dan yang kedua adalah upper_bound kunci.

Untuk mengakses iterator pertama pasangan pr yang dikembalikan oleh fungsi anggota, gunakan pr.first dan untuk mendereferensikan iterator batas bawah, gunakan *(pr.first). Untuk mengakses iterator kedua pasangan pr yang dikembalikan oleh fungsi anggota, gunakan pr.second dan untuk mendereferensikan iterator batas atas, gunakan *(pr.second).

Contoh

// hash_map_equal_range.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   typedef hash_map <int, int> IntMap;
   IntMap hm1;
   hash_map <int, int> :: const_iterator hm1_RcIter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 1, 10 ) );
   hm1.insert ( Int_Pair ( 2, 20 ) );
   hm1.insert ( Int_Pair ( 3, 30 ) );

   pair <IntMap::const_iterator, IntMap::const_iterator> p1, p2;
   p1 = hm1.equal_range( 2 );

   cout << "The lower bound of the element with "
        << "a key of 2 in the hash_map hm1 is: "
        << p1.first -> second << "." << endl;

   cout << "The upper bound of the element with "
        << "a key of 2 in the hash_map hm1 is: "
        << p1.second -> second << "." << endl;

   // Compare the upper_bound called directly
   hm1_RcIter = hm1.upper_bound( 2 );

   cout << "A direct call of upper_bound( 2 ) gives "
        << hm1_RcIter -> second << "," << endl
        << "matching the 2nd element of the pair"
        << " returned by equal_range( 2 )." << endl;

   p2 = hm1.equal_range( 4 );

   // If no match is found for the key,
   // both elements of the pair return end( )
   if ( ( p2.first == hm1.end( ) ) && ( p2.second == hm1.end( ) ) )
      cout << "The hash_map hm1 doesn't have an element "
             << "with a key less than 40." << endl;
   else
      cout << "The element of hash_map hm1 with a key >= 40 is: "
           << p1.first -> first << "." << endl;
}
The lower bound of the element with a key of 2 in the hash_map hm1 is: 20.
The upper bound of the element with a key of 2 in the hash_map hm1 is: 30.
A direct call of upper_bound( 2 ) gives 30,
matching the 2nd element of the pair returned by equal_range( 2 ).
The hash_map hm1 doesn't have an element with a key less than 40.

hash_map::erase

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Menghapus elemen atau rentang elemen dalam hash_map dari posisi tertentu atau menghapus elemen yang cocok dengan kunci tertentu.

iterator erase(iterator _Where);

iterator erase(iterator first, iterator last);

size_type erase(const key_type& key);

Parameter

_Where
Posisi elemen yang akan dihapus dari hash_map.

first
Posisi elemen pertama dihapus dari hash_map.

last
Posisi tepat di luar elemen terakhir yang dihapus dari hash_map.

key
Nilai kunci elemen yang akan dihapus dari hash_map.

Tampilkan Nilai

Untuk dua fungsi anggota pertama, iterator dua arah yang menunjuk elemen pertama yang tersisa di luar elemen apa pun yang dihapus, atau penunjuk ke akhir jika tidak ada elemen tersebut hash_map .

Untuk fungsi anggota ketiga, mengembalikan jumlah elemen yang telah dihapus dari hash_map.

Keterangan

Fungsi anggota tidak pernah melemparkan pengecualian.

Contoh

Contoh berikut menunjukkan penggunaan hash_map::erase fungsi anggota.

// hash_map_erase.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main()
{
    using namespace std;
    using namespace stdext;
    hash_map<int, int> hm1, hm2, hm3;
    hash_map<int, int> :: iterator pIter, Iter1, Iter2;
    int i;
    hash_map<int, int>::size_type n;
    typedef pair<int, int> Int_Pair;

    for (i = 1; i < 5; i++)
    {
        hm1.insert(Int_Pair (i, i));
        hm2.insert(Int_Pair (i, i*i));
        hm3.insert(Int_Pair (i, i-1));
    }

    // The 1st member function removes an element at a given position
    Iter1 = ++hm1.begin();
    hm1.erase(Iter1);

    cout << "After the 2nd element is deleted, the hash_map hm1 is:";
    for (pIter = hm1.begin(); pIter != hm1.end(); pIter++)
        cout << " " << pIter -> second;
    cout << "." << endl;

    // The 2nd member function removes elements
    // in the range [ first,  last)
    Iter1 = ++hm2.begin();
    Iter2 = --hm2.end();
    hm2.erase(Iter1, Iter2);

    cout << "After the middle two elements are deleted, "
         << "the hash_map hm2 is:";
    for (pIter = hm2.begin(); pIter != hm2.end(); pIter++)
        cout << " " << pIter -> second;
    cout << "." << endl;

    // The 3rd member function removes elements with a given  key
    n = hm3.erase(2);

    cout << "After the element with a key of 2 is deleted,\n"
         << "the hash_map hm3 is:";
    for (pIter = hm3.begin(); pIter != hm3.end(); pIter++)
        cout << " " << pIter -> second;
    cout << "." << endl;

    // The 3rd member function returns the number of elements removed
    cout << "The number of elements removed from hm3 is: "
         << n << "." << endl;

    // The dereferenced iterator can also be used to specify a key
    Iter1 = ++hm3.begin();
    hm3.erase(Iter1);

    cout << "After another element with a key equal to that"
         << endl;
    cout  << "of the 2nd element is deleted, "
          << "the hash_map hm3 is:";
    for (pIter = hm3.begin(); pIter != hm3.end(); pIter++)
        cout << " " << pIter -> second;
    cout << "." << endl;
}
After the 2nd element is deleted, the hash_map hm1 is: 1 3 4.
After the middle two elements are deleted, the hash_map hm2 is: 1 16.
After the element with a key of 2 is deleted,
the hash_map hm3 is: 0 2 3.
The number of elements removed from hm3 is: 1.
After another element with a key equal to that
of the 2nd element is deleted, the hash_map hm3 is: 0 3.

hash_map::find

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan iterator yang membahas lokasi elemen dalam hash_map yang memiliki kunci yang setara dengan kunci yang ditentukan.

iterator find(const Key& key);

const_iterator find(const Key& key) const;

Parameter

key
Nilai kunci yang akan dicocokkan dengan kunci pengurutan elemen dari yang hash_map sedang dicari.

Tampilkan Nilai

Iterator yang membahas lokasi elemen dengan kunci tertentu, atau lokasi berhasil elemen terakhir dalam jika tidak ada kecocokan hash_map yang ditemukan untuk kunci.

Keterangan

find mengembalikan iterator yang membahas elemen dalam hash_map kunci pengurutannya setara dengan kunci argumen di bawah predikat biner yang menginduksi pengurutan berdasarkan hubungan yang kurang dari perbandingan.

Jika nilai find pengembalian ditetapkan ke const_iterator, hash_map objek tidak dapat dimodifikasi. Jika nilai find pengembalian ditetapkan ke iterator, hash_map objek dapat dimodifikasi

Contoh

// hash_map_find.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;
   hash_map <int, int> :: const_iterator hm1_AcIter, hm1_RcIter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 1, 10 ) );
   hm1.insert ( Int_Pair ( 2, 20 ) );
   hm1.insert ( Int_Pair ( 3, 30 ) );

   hm1_RcIter = hm1.find( 2 );
   cout << "The element of hash_map hm1 with a key of 2 is: "
        << hm1_RcIter -> second << "." << endl;

   // If no match is found for the key, end( ) is returned
   hm1_RcIter = hm1.find( 4 );

   if ( hm1_RcIter == hm1.end( ) )
      cout << "The hash_map hm1 doesn't have an element "
           << "with a key of 4." << endl;
   else
      cout << "The element of hash_map hm1 with a key of 4 is: "
           << hm1_RcIter -> second << "." << endl;

   // The element at a specific location in the hash_map can be found
   // using a dereferenced iterator addressing the location
   hm1_AcIter = hm1.end( );
   hm1_AcIter--;
   hm1_RcIter = hm1.find( hm1_AcIter -> first );
   cout << "The element of hm1 with a key matching "
        << "that of the last element is: "
        << hm1_RcIter -> second << "." << endl;
}
The element of hash_map hm1 with a key of 2 is: 20.
The hash_map hm1 doesn't have an element with a key of 4.
The element of hm1 with a key matching that of the last element is: 30.

hash_map::get_allocator

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan salinan objek alokator yang digunakan untuk membuat hash_map.

Allocator get_allocator() const;

Tampilkan Nilai

Alokator yang digunakan oleh hash_map.

Keterangan

Alokator untuk hash_map kelas menentukan bagaimana kelas mengelola penyimpanan. Alokator default yang disediakan dengan kelas kontainer Pustaka Standar C++ cukup untuk sebagian besar kebutuhan pemrograman. Menulis dan menggunakan kelas alokator Anda sendiri adalah topik C++ tingkat lanjut.

Contoh

// hash_map_get_allocator.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int>::allocator_type hm1_Alloc;
   hash_map <int, int>::allocator_type hm2_Alloc;
   hash_map <int, double>::allocator_type hm3_Alloc;
   hash_map <int, int>::allocator_type hm4_Alloc;

   // The following lines declare objects
   // that use the default allocator.
   hash_map <int, int> hm1;
   hash_map <int, int> hm2;
   hash_map <int, double> hm3;

   hm1_Alloc = hm1.get_allocator( );
   hm2_Alloc = hm2.get_allocator( );
   hm3_Alloc = hm3.get_allocator( );

   cout << "The number of integers that can be allocated"
        << endl << "before free memory is exhausted: "
        << hm2.max_size( ) << "." << endl;

   cout << "The number of doubles that can be allocated"
        << endl << "before free memory is exhausted: "
        << hm3.max_size( ) <<  "." << endl;

   // The following line creates a hash_map hm4
   // with the allocator of hash_map hm1.
   hash_map <int, int> hm4( less<int>( ), hm1_Alloc );

   hm4_Alloc = hm4.get_allocator( );

   // Two allocators are interchangeable if
   // storage allocated from each can be
   // deallocated with the other
   if( hm1_Alloc == hm4_Alloc )
   {
      cout << "The allocators are interchangeable."
           << endl;
   }
   else
   {
      cout << "The allocators are not interchangeable."
           << endl;
   }
}

hash_map::hash_map

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Membangun hash_map yang kosong atau merupakan salinan dari semua atau sebagian dari beberapa lainnya hash_map.

hash_map();

explicit hash_map(
    const Traits& Comp);

hash_map(
    const Traits& Comp,
    const Allocator& Al);

hash_map(
    const hash_map& Right);

hash_map(
    hash_map&& Right);

hash_map(
    initializer_list<Type> IList);hash_map(initializer_list<Type> IList,
    const key_compare& Comp);

hash_map(
    initializer_list<Type> IList,
    const key_compare& Comp,
    const allocator_type& Al);

template <class InputIterator>
hash_map(
    InputIterator First,
    InputIterator Last);

template <class InputIterator>
hash_map(
    InputIterator First,
    InputIterator Last,
    const Traits& Comp);

template <class InputIterator>
hash_map(
    InputIterator First,
    InputIterator Last,
    const Traits& Comp,
    const Allocator& Al

Parameter

Al
Kelas alokator penyimpanan yang akan digunakan untuk objek ini hash_map , yang default ke Allocator.

Comp
Fungsi perbandingan jenis const Traits yang digunakan untuk mengurutkan elemen dalam hash_map, yang default ke hash_compare.

Right
Di hash_map mana peta yang dibangun akan menjadi salinan.

First
Posisi elemen pertama dalam rentang elemen yang akan disalin.

Last
Posisi elemen pertama di luar rentang elemen yang akan disalin.

IList
Si initializer_list

Keterangan

Semua konstruktor menyimpan jenis objek alokator yang mengelola penyimpanan memori untuk hash_map dan nantinya dapat dikembalikan dengan memanggil get_allocator. Parameter alokator sering dihilangkan dalam deklarasi kelas dan makro praproses yang digunakan untuk menggantikan alokator alternatif.

Semua konstruktor menginisialisasi hash_map.

Semua konstruktor menyimpan objek fungsi jenis Traits yang digunakan untuk membuat pesanan hash_map di antara kunci dan yang nantinya dapat dikembalikan dengan memanggil key_comp.

Tiga konstruktor pertama menentukan awal hash_mapkosong , selain itu, yang kedua menentukan jenis fungsi perbandingan (Comp) yang akan digunakan dalam menetapkan urutan elemen dan yang ketiga secara eksplisit menentukan jenis alokator (Al) yang akan digunakan. Kata kunci explicit menekan jenis konversi jenis otomatis tertentu.

Konstruktor keempat menentukan salinan hash_mapRight.

Tiga konstruktor berikutnya menyalin rentang [First, Last)hash_map dengan peningkatan eksplisititas dalam menentukan jenis fungsi perbandingan kelas Traits dan alokator.

Konstruktor terakhir memindahkan hash_mapRight.

hash_map::insert

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Menyisipkan elemen atau rentang elemen ke dalam hash_map.

pair <iterator, bool> insert(
    const value_type& val);

iterator insert(
    const_iterator _Where,
    const value_type& val);

template <class InputIterator>
void insert(
    InputIterator first,
    InputIterator last);

template <class ValTy>
pair <iterator, bool>
insert(
    ValTy&& val);

template <class ValTy>
iterator insert(
    const_iterator _Where,
    ValTy&& val);

Parameter

val
Nilai elemen yang akan dimasukkan ke dalam kecuali sudah berisi elemen tersebut hash_maphash_map (atau, lebih umum, elemen yang kuncinya diurutkan secara setara).

_Where
Petunjuk mengenai tempat untuk mulai mencari titik penyisipan yang benar.

first
Posisi elemen pertama yang akan disalin dari hash_map.

last
Posisi tepat di luar elemen terakhir yang akan disalin dari hash_map.

Tampilkan Nilai

Fungsi anggota pertama insert mengembalikan pasangan yang komponennya bool mengembalikan true jika penyisipan dibuat dan false jika hash_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, dan untuk mendereferensikannya, gunakan (pr.second).

Fungsi anggota kedua insert , versi petunjuk, mengembalikan iterator yang menunjuk ke posisi di mana elemen baru dimasukkan ke hash_mapdalam .

Dua insert fungsi anggota terakhir berperilaku sama dengan dua pertama, kecuali bahwa mereka memindahkan konstruksi nilai yang disisipkan.

Keterangan

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.

Penyisipan dapat terjadi dalam waktu konstanta _Whereyang diamortisasi untuk versi petunjuk sisipan, alih-alih waktu logaritmik, jika titik penyisipan segera mengikuti .

Fungsi anggota ketiga menyisipkan urutan nilai elemen ke dalam yang hash_map sesuai dengan setiap elemen yang ditangani oleh iterator dalam rentang *[First, Last)* set yang ditentukan.

Contoh

// hash_map_insert.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>
#include <string>

int main()
{
    using namespace std;
    using namespace stdext;
    hash_map<int, int>::iterator hm1_pIter, hm2_pIter;

    hash_map<int, int> hm1, hm2;
    typedef pair<int, int> Int_Pair;

    hm1.insert(Int_Pair(1, 10));
    hm1.insert(Int_Pair(2, 20));
    hm1.insert(Int_Pair(3, 30));
    hm1.insert(Int_Pair(4, 40));

    cout << "The original elements (Key => Value) of hm1 are:";
    for (hm1_pIter = hm1.begin(); hm1_pIter != hm1.end(); hm1_pIter++)
        cout << endl << " " << hm1_pIter -> first << " => "
             << hm1_pIter->second;
    cout << endl;

    pair< hash_map<int,int>::iterator, bool > pr;
    pr = hm1.insert(Int_Pair(1, 10));

    if (pr.second == true)
    {
        cout << "The element 10 was inserted in hm1 successfully."
            << endl;
    }
    else
    {
        cout << "The element 10 already exists in hm1\n"
            << "with a key value of "
            << "((pr.first) -> first) = " << (pr.first)->first
            << "." << endl;
    }

    // The hint version of insert
    hm1.insert(--hm1.end(), Int_Pair(5, 50));

    cout << "After the insertions, the elements of hm1 are:";
    for (hm1_pIter = hm1.begin(); hm1_pIter != hm1.end(); hm1_pIter++)
        cout << endl << hm1_pIter -> first << " => "
             << hm1_pIter->second;
    cout << endl;

    hm2.insert(Int_Pair(10, 100));

    // The templatized version inserting a range
    hm2.insert( ++hm1.begin(), --hm1.end() );

    cout << "After the insertions, the elements of hm2 are:";
    for (hm2_pIter = hm2.begin(); hm2_pIter != hm2.end(); hm2_pIter++)
        cout << endl << hm2_pIter -> first << " => "
             << hm2_pIter->second;
    cout << endl;

    // The templatized versions move constructing elements
    hash_map<int, string> hm3, hm4;
    pair<int, string> is1(1, "a"), is2(2, "b");

    hm3.insert(move(is1));
    cout << "After the move insertion, hm3 contains:" << endl
      << hm3.begin()->first
      << " => " << hm3.begin()->second
      << endl;

    hm4.insert(hm4.begin(), move(is2));
    cout << "After the move insertion, hm4 contains:" << endl
      << hm4.begin()->first
      << " => " << hm4.begin()->second
      << endl;
}
The original elements (Key => Value) of hm1 are:
1 => 10
2 => 20
3 => 30
4 => 40
The element 10 already exists in hm1
with a key value of ((pr.first) -> first) = 1.
After the insertions, the elements of hm1 are:
1 => 10
2 => 20
3 => 30
4 => 40
5 => 50
After the insertions, the elements of hm2 are:
2 => 20
10 => 100
3 => 30
4 => 40
After the move insertion, hm3 contains:
1 => a
After the move insertion, hm4 contains:
2 => b

hash_map::iterator

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis yang menyediakan iterator dua arah yang dapat membaca atau memodifikasi elemen apa pun dalam hash_map.

typedef list<typename Traits::value_type, typename Traits::allocator_type>::iterator iterator;

Keterangan

Yang iterator ditentukan oleh hash_map poin ke elemen yang merupakan objek dari , yaitu jenis value_typepair<const Key, Type>, yang anggota pertamanya adalah kunci untuk elemen dan yang anggota keduanya adalah datum yang dipetakan yang dipegang oleh elemen .

Untuk mendereferensikan iterator bernama Iter menunjuk ke elemen dalam multimap, gunakan -> operator.

Untuk mengakses nilai kunci untuk elemen , gunakan Iter->first, yang setara dengan (*Iter).first. Untuk mengakses nilai datum yang dipetakan untuk elemen , gunakan Iter->second, yang setara dengan (*Iter).second.

Jenis iterator dapat digunakan untuk mengubah nilai elemen.

Contoh

Lihat contoh untuk begin contoh cara mendeklarasikan dan menggunakan iterator.

hash_map::key_comp

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengambil salinan objek perbandingan yang digunakan untuk mengurutkan kunci dalam hash_map.

key_compare key_comp() const;

Tampilkan Nilai

Mengembalikan objek fungsi yang hash_map digunakan untuk mengurutkan elemennya.

Keterangan

Objek tersimpan menentukan fungsi anggota

bool operator( const Key& left, const Key&right );

yang mengembalikan true jika left mendahului dan tidak sama dengan right dalam urutan pengurutan.

Contoh

// hash_map_key_comp.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;

   hash_map <int, int, hash_compare<int, less<int> > > hm1;
   hash_map <int, int, hash_compare<int, less<int> > >::key_compare
      kc1 = hm1.key_comp( ) ;

   // Operator stored in kc1 tests order & returns bool value
   bool result1 = kc1( 2, 3 ) ;
   if( result1 == true )
   {
      cout << "kc1( 2,3 ) returns value of true,"
           << "\n where kc1 is the function object of hm1"
           << " of type key_compare." << endl;
   }
   else
   {
      cout << "kc1( 2,3 ) returns value of false"
           << "\n where kc1 is the function object of hm1"
           << " of type key_compare." << endl;
   }

   hash_map <int, int, hash_compare<int, greater<int> > > hm2;
   hash_map <int, int, hash_compare<int, greater<int> > >
      ::key_compare kc2 = hm2.key_comp( );

   // Operator stored in kc2 tests order & returns bool value
   bool result2 = kc2( 2, 3 ) ;
   if( result2 == true )
   {
      cout << "kc2( 2,3 ) returns value of true,"
           << "\n where kc2 is the function object of hm2"
           << " of type key_compare." << endl;
   }
   else
   {
      cout << "kc2( 2,3 ) returns value of false,"
           << "\n where kc2 is the function object of hm2"
           << " of type key_compare." << endl;
   }
}

hash_map::key_compare

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis yang menyediakan objek fungsi yang dapat membandingkan dua kunci pengurutan untuk menentukan urutan relatif dua elemen di peta.

typedef Traits key_compare;

Keterangan

key_compare adalah sinonim untuk parameter Traitstemplat .

Untuk informasi selengkapnya tentang Traits lihat hash_map topik Kelas .

Contoh

Lihat contoh untuk key_comp contoh cara mendeklarasikan dan menggunakan key_compare.

hash_map::key_type

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis menjelaskan objek kunci pengurutan yang merupakan setiap elemen dari hash_map.

typedef Key key_type;

Keterangan

key_type adalah sinonim untuk parameter Keytemplat .

Untuk informasi selengkapnya tentang Key, lihat bagian Keterangan dari hash_map topik Kelas .

Contoh

Lihat contoh untuk value_type contoh cara mendeklarasikan dan menggunakan key_type.

hash_map::lower_bound

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan iterator ke elemen pertama dalam hash_map dengan nilai kunci yang sama dengan atau lebih besar dari kunci yang ditentukan.

iterator lower_bound(const Key& key);

const_iterator lower_bound(const Key& key) const;

Parameter

key
Nilai kunci argumen yang akan dibandingkan dengan kunci pengurutan elemen dari yang hash_map sedang dicari.

Tampilkan Nilai

iterator atau const_iterator yang membahas lokasi elemen dalam hash_map yang dengan kunci yang sama dengan atau lebih besar dari kunci argumen, atau yang membahas lokasi yang menggantikan elemen terakhir dalam hash_map jika tidak ada kecocokan yang ditemukan untuk kunci.

Jika nilai lower_bound pengembalian ditetapkan ke const_iterator, hash_map objek tidak dapat dimodifikasi. Jika nilai lower_bound pengembalian ditetapkan ke iterator, hash_map objek dapat dimodifikasi.

Contoh

// hash_map_lower_bound.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;
   hash_map <int, int> :: const_iterator hm1_AcIter, hm1_RcIter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 1, 10 ) );
   hm1.insert ( Int_Pair ( 2, 20 ) );
   hm1.insert ( Int_Pair ( 3, 30 ) );

   hm1_RcIter = hm1.lower_bound( 2 );
   cout << "The first element of hash_map hm1 with a key of 2 is: "
        << hm1_RcIter -> second << "." << endl;

   // If no match is found for the key, end( ) is returned
   hm1_RcIter = hm1. lower_bound ( 4 );

   if ( hm1_RcIter == hm1.end( ) )
      cout << "The hash_map hm1 doesn't have an element "
           << "with a key of 4." << endl;
   else
      cout << "The element of hash_map hm1 with a key of 4 is: "
           << hm1_RcIter -> second << "." << endl;

   // An element at a specific location in the hash_map can be
   // found using a dereferenced iterator addressing the location
   hm1_AcIter = hm1.end( );
   hm1_AcIter--;
   hm1_RcIter = hm1. lower_bound ( hm1_AcIter -> first );
   cout << "The element of hm1 with a key matching "
        << "that of the last element is: "
        << hm1_RcIter -> second << "." << endl;
}
The first element of hash_map hm1 with a key of 2 is: 20.
The hash_map hm1 doesn't have an element with a key of 4.
The element of hm1 with a key matching that of the last element is: 30.

hash_map::mapped_type

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis yang mewakili jenis data yang disimpan dalam hash_map.

typedef Type mapped_type;

Keterangan

Jenisnya mapped_type adalah sinonim untuk parameter Typetemplat .

Untuk informasi selengkapnya tentang Type lihat hash_map topik Kelas .

Contoh

Lihat contoh untuk value_type contoh cara mendeklarasikan dan menggunakan key_type.

hash_map::max_size

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan panjang hash_mapmaksimum .

size_type max_size() const;

Tampilkan Nilai

Panjang maksimum yang mungkin dari hash_map.

Contoh

// hash_map_max_size.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;
   hash_map <int, int> :: size_type i;

   i = hm1.max_size( );
   cout << "The maximum possible length "
        << "of the hash_map is " << i << "."
        << endl << "(Magnitude is machine specific.)";
}

hash_map::operator[]

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Menyisipkan elemen ke dalam hash_map dengan nilai kunci tertentu.

Type& operator[](const Key& key);

Type& operator[](Key&& key);

Parameter

key
Nilai kunci elemen yang akan 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 penggunaan hash_map m

m[ key] = DataValue;

di mana DataValue adalah nilai mapped_type elemen dengan nilai keykunci .

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

// hash_map_op_ref.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>
#include <string>

int main( )
{
   using namespace std;
   using namespace stdext;
   typedef pair <const int, int> cInt2Int;
   hash_map <int, int> hm1;
   hash_map <int, int> :: iterator pIter;

   // Insert a data value of 10 with a key of 1
   // into a hash_map using the operator[] member function
   hm1[ 1 ] = 10;

   // Compare other ways to insert objects into a hash_map
   hm1.insert ( hash_map <int, int> :: value_type ( 2, 20 ) );
   hm1.insert ( cInt2Int ( 3, 30 ) );

   cout  << "The keys of the mapped elements are:";
   for ( pIter = hm1.begin( ) ; pIter != hm1.end( ) ; pIter++ )
      cout << " " << pIter -> first;
   cout << "." << endl;

   cout  << "The values of the mapped elements are:";
   for ( pIter = hm1.begin( ) ; pIter != hm1.end( ) ; pIter++ )
      cout << " " << pIter -> second;
   cout << "." << endl;

   // If the key already exists, operator[]
   // changes the value of the datum in the element
   hm1[ 2 ] = 40;

   // operator[] will also insert the value of the data
   // type's default constructor if the value is unspecified
   hm1[5];

   cout  << "The keys of the mapped elements are now:";
   for ( pIter = hm1.begin( ) ; pIter != hm1.end( ) ; pIter++ )
      cout << " " << pIter -> first;
   cout << "." << endl;

   cout  << "The values of the mapped elements are now:";
   for ( pIter = hm1.begin( ) ; pIter != hm1.end( ) ; pIter++ )
      cout << " " << pIter -> second;
   cout << "." << endl;

   // operator[] will also insert by moving a key
   hash_map <string, int> hm2;
   string str("a");
   hm2[move(str)] = 1;
   cout << "The moved key is " << hm2.begin()->first
      << ", with value " << hm2.begin()->second << endl;
}

hash_map::operator=

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengganti elemen hash_map dengan salinan dari yang lain hash_map.

hash_map& operator=(const hash_map& right);

hash_map& operator=(hash_map&& right);

Parameter

right
Kelas right yang sedang disalin ke hash_mapdalam .

Keterangan

Setelah menghapus elemen yang ada dalam hash_map, operator= salin atau pindahkan konten right ke hash_mapdalam .

Contoh

// hash_map_operator_as.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map<int, int> v1, v2, v3;
   hash_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;
}

hash_map::pointer

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis yang menyediakan penunjuk ke elemen dalam hash_map.

typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::pointer pointer;

Keterangan

Jenis pointer dapat digunakan untuk mengubah nilai elemen.

Dalam kebanyakan kasus, harus iterator digunakan untuk mengakses elemen dalam hash_map objek.

hash_map::rbegin

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan iterator yang menangani elemen pertama dalam terbalik hash_map.

const_reverse_iterator rbegin() const;

reverse_iterator rbegin();

Tampilkan Nilai

Iterator dua arah terbalik yang membahas elemen pertama dalam terbalik hash_map atau mengatasi apa yang telah menjadi elemen terakhir dalam yang tidak terbalik hash_map.

Keterangan

rbegin digunakan dengan terbalik hash_map seperti begin yang digunakan dengan hash_map.

Jika nilai rbegin pengembalian ditetapkan ke const_reverse_iterator, maka hash_map objek tidak dapat dimodifikasi. Jika nilai rbegin pengembalian ditetapkan ke reverse_iterator, maka hash_map objek dapat dimodifikasi.

rbegin dapat digunakan untuk melakukan iterasi melalui mundur hash_map .

Contoh

// hash_map_rbegin.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;

   hash_map <int, int> :: iterator hm1_Iter;
   hash_map <int, int> :: reverse_iterator hm1_rIter;
   hash_map <int, int> :: const_reverse_iterator hm1_crIter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 1, 10 ) );
   hm1.insert ( Int_Pair ( 2, 20 ) );
   hm1.insert ( Int_Pair ( 3, 30 ) );

   hm1_rIter = hm1.rbegin( );
   cout << "The first element of the reversed hash_map hm1 is "
        << hm1_rIter -> first << "." << endl;

   // begin can be used to start an iteration
   // through a hash_map in a forward order
   cout << "The hash_map is: ";
   for ( hm1_Iter = hm1.begin( ) ; hm1_Iter != hm1.end( ); hm1_Iter++)
      cout << hm1_Iter -> first << " ";
      cout << "." << endl;

   // rbegin can be used to start an iteration
   // through a hash_map in a reverse order
   cout << "The reversed hash_map is: ";
   for ( hm1_rIter = hm1.rbegin( ) ; hm1_rIter != hm1.rend( ); hm1_rIter++)
      cout << hm1_rIter -> first << " ";
      cout << "." << endl;

   // A hash_map element can be erased by dereferencing to its key
   hm1_rIter = hm1.rbegin( );
   hm1.erase ( hm1_rIter -> first );

   hm1_rIter = hm1.rbegin( );
   cout << "After the erasure, the first element "
        << "in the reversed hash_map is "
        << hm1_rIter -> first << "." << endl;
}
The first element of the reversed hash_map hm1 is 3.
The hash_map is: 1 2 3 .
The reversed hash_map is: 3 2 1 .
After the erasure, the first element in the reversed hash_map is 2.

hash_map::reference

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis yang menyediakan referensi ke elemen yang disimpan dalam hash_map.

typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::reference reference;

Contoh

// hash_map_reference.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 1, 10 ) );
   hm1.insert ( Int_Pair ( 2, 20 ) );

   // Declare and initialize a const_reference &Ref1
   // to the key of the first element
   const int &Ref1 = ( hm1.begin( ) -> first );

   // The following line would cause an error as the
   // non-const_reference cannot be used to access the key
   // int &Ref1 = ( hm1.begin( ) -> first );

   cout << "The key of first element in the hash_map is "
        << Ref1 << "." << endl;

   // Declare and initialize a reference &Ref2
   // to the data value of the first element
   int &Ref2 = ( hm1.begin( ) -> second );

   cout << "The data value of first element in the hash_map is "
        << Ref2 << "." << endl;

   // The non-const_reference can be used to modify the
   // data value of the first element
   Ref2 = Ref2 + 5;
   cout << "The modified data value of first element is "
        << Ref2 << "." << endl;
}
The key of first element in the hash_map is 1.
The data value of first element in the hash_map is 10.
The modified data value of first element is 15.

hash_map::rend

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan iterator yang membahas lokasi yang menggantikan elemen terakhir dalam terbalik hash_map.

const_reverse_iterator rend() const;

reverse_iterator rend();

Tampilkan Nilai

Iterator dua arah terbalik yang membahas lokasi yang menggantikan elemen terakhir dalam terbalik hash_map (lokasi yang telah mendahului elemen pertama dalam yang tidak terbalik hash_map).

Keterangan

rend digunakan dengan terbalik hash_map seperti end yang digunakan dengan hash_map.

Jika nilai rend pengembalian ditetapkan ke const_reverse_iterator, maka hash_map objek tidak dapat dimodifikasi. Jika nilai rend pengembalian ditetapkan ke reverse_iterator, maka hash_map objek dapat dimodifikasi.

rend dapat digunakan untuk menguji apakah iterator terbalik telah mencapai akhir hash_map.

Nilai yang dikembalikan oleh rend tidak boleh didereferensikan.

Contoh

// hash_map_rend.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;

   hash_map <int, int> :: iterator hm1_Iter;
   hash_map <int, int> :: reverse_iterator hm1_rIter;
   hash_map <int, int> :: const_reverse_iterator hm1_crIter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 1, 10 ) );
   hm1.insert ( Int_Pair ( 2, 20 ) );
   hm1.insert ( Int_Pair ( 3, 30 ) );

   hm1_rIter = hm1.rend( );
   hm1_rIter--;
   cout << "The last element of the reversed hash_map hm1 is "
        << hm1_rIter -> first << "." << endl;

   // begin can be used to start an iteration
   // through a hash_map in a forward order
   cout << "The hash_map is: ";
   for ( hm1_Iter = hm1.begin( ) ; hm1_Iter != hm1.end( );
   hm1_Iter++)
      cout << hm1_Iter -> first << " ";
      cout << "." << endl;

   // rbegin can be used to start an iteration
   // through a hash_map in a reverse order
   cout << "The reversed hash_map is: ";
   for ( hm1_rIter = hm1.rbegin( ) ; hm1_rIter != hm1.rend( );
      hm1_rIter++)
      cout << hm1_rIter -> first << " ";
      cout << "." << endl;

   // A hash_map element can be erased by dereferencing to its key
   hm1_rIter = --hm1.rend( );
   hm1.erase ( hm1_rIter -> first );

   hm1_rIter = hm1.rend( );
   hm1_rIter--;
   cout << "After the erasure, the last element "
        << "in the reversed hash_map is "
        << hm1_rIter -> first << "." << endl;
}
The last element of the reversed hash_map hm1 is 1.
The hash_map is: 1 2 3 .
The reversed hash_map is: 3 2 1 .
After the erasure, the last element in the reversed hash_map is 2.

hash_map::reverse_iterator

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis yang menyediakan iterator dua arah yang dapat membaca atau memodifikasi elemen dalam terbalik hash_map.

typedef list<typename Traits::value_type, typename Traits::allocator_type>::reverse_iterator reverse_iterator;

Keterangan

Jenis reverse_iterator tidak dapat memodifikasi nilai elemen dan digunakan untuk melakukan iterasi melalui secara hash_map terbalik.

Yang reverse_iterator ditentukan oleh hash_map titik ke elemen yang merupakan objek value_type, yaitu jenis pair<const Key, Type>, yang anggota pertamanya adalah kunci untuk elemen dan yang anggota keduanya adalah datum yang dipetakan yang dipegang oleh elemen .

Untuk mendereferensikan reverse_iteratorrIter menunjuk ke elemen dalam hash_map, gunakan -> operator .

Untuk mengakses nilai kunci untuk elemen , gunakan rIter->first, yang setara dengan (*rIter).first. Untuk mengakses nilai datum yang dipetakan untuk elemen , gunakan rIter->second, yang setara dengan (*rIter).first.

Contoh

Lihat contoh untuk rbegin contoh cara mendeklarasikan dan menggunakan reverse_iterator.

hash_map::size

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan jumlah elemen dalam hash_map.

size_type size() const;

Tampilkan Nilai

Panjang saat ini dari hash_map.

Contoh

Contoh berikut menunjukkan penggunaan hash_map::size fungsi anggota.

// hash_map_size.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
    using namespace std;
    using namespace stdext;
    hash_map<int, int> hm1, hm2;
    hash_map<int, int>::size_type i;
    typedef pair<int, int> Int_Pair;

    hm1.insert(Int_Pair(1, 1));
    i = hm1.size();
    cout << "The hash_map length is " << i << "." << endl;

    hm1.insert(Int_Pair(2, 4));
    i = hm1.size();
    cout << "The hash_map length is now " << i << "." << endl;
}
The hash_map length is 1.
The hash_map length is now 2.

hash_map::size_type

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis bilangan bulat yang tidak ditandatangani yang dapat mewakili jumlah elemen dalam hash_map.

typedef list<typename _Traits::value_type, typename _Traits::allocator_type>::size_type size_type;

Contoh

Lihat contoh untuk size contoh cara mendeklarasikan dan menggunakan size_type

hash_map::swap

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Menukar elemen dua hash_maps.

void swap(hash_map& right);

Parameter

right
Argumen hash_map yang menyediakan elemen yang akan ditukar dengan target hash_map.

Keterangan

Fungsi anggota tidak membatalkan referensi, pointer, atau iterator yang menunjuk elemen dalam dua hash_maps yang elemennya sedang ditukar.

Contoh

// hash_map_swap.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1, hm2, hm3;
   hash_map <int, int>::iterator hm1_Iter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 1, 10 ) );
   hm1.insert ( Int_Pair ( 2, 20 ) );
   hm1.insert ( Int_Pair ( 3, 30 ) );
   hm2.insert ( Int_Pair ( 10, 100 ) );
   hm2.insert ( Int_Pair ( 20, 200 ) );
   hm3.insert ( Int_Pair ( 30, 300 ) );

   cout << "The original hash_map hm1 is:";
   for ( hm1_Iter = hm1.begin( ); hm1_Iter != hm1.end( ); hm1_Iter++ )
      cout << " " << hm1_Iter -> second;
   cout   << "." << endl;

   // This is the member function version of swap
   // hm2 is said to be the argument hash_map;
   // hm1 is said to be the target hash_map
   hm1.swap( hm2 );

   cout << "After swapping with hm2, hash_map hm1 is:";
   for ( hm1_Iter = hm1.begin( ); hm1_Iter != hm1.end( ); hm1_Iter++ )
      cout << " " << hm1_Iter -> second;
   cout  << "." << endl;

   // This is the specialized template version of swap
   swap( hm1, hm3 );

   cout << "After swapping with hm3, hash_map hm1 is:";
   for ( hm1_Iter = hm1.begin( ); hm1_Iter != hm1.end( ); hm1_Iter++ )
      cout << " " << hm1_Iter -> second;
   cout   << "." << endl;
}
The original hash_map hm1 is: 10 20 30.
After swapping with hm2, hash_map hm1 is: 100 200.
After swapping with hm3, hash_map hm1 is: 300.

hash_map::upper_bound

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan iterator ke elemen pertama dalam hash_map yang dengan kunci yang memiliki nilai yang lebih besar dari kunci yang ditentukan.

iterator upper_bound(const Key& key);

const_iterator upper_bound(const Key& key) const;

Parameter

key
Nilai kunci argumen yang akan dibandingkan dengan nilai kunci pengurutan elemen dari yang hash_map sedang dicari.

Tampilkan Nilai

iterator Atau const_iterator yang membahas lokasi elemen dalam hash_map yang dengan kunci yang lebih besar dari kunci argumen, atau yang membahas lokasi yang menggantikan elemen terakhir dalam jika tidak ada kecocokan hash_map yang ditemukan untuk kunci.

Jika nilai yang dikembalikan ditetapkan ke const_iterator, hash_map objek tidak dapat dimodifikasi. Jika nilai pengembalian ditetapkan ke iterator, hash_map objek dapat dimodifikasi.

Contoh

// hash_map_upper_bound.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   hash_map <int, int> hm1;
   hash_map <int, int> :: const_iterator hm1_AcIter, hm1_RcIter;
   typedef pair <int, int> Int_Pair;

   hm1.insert ( Int_Pair ( 1, 10 ) );
   hm1.insert ( Int_Pair ( 2, 20 ) );
   hm1.insert ( Int_Pair ( 3, 30 ) );

   hm1_RcIter = hm1.upper_bound( 2 );
   cout << "The first element of hash_map hm1 with a key "
        << "greater than 2 is: "
        << hm1_RcIter -> second << "." << endl;

   // If no match is found for the key, end is returned
   hm1_RcIter = hm1. upper_bound ( 4 );

   if ( hm1_RcIter == hm1.end( ) )
      cout << "The hash_map hm1 doesn't have an element "
           << "with a key greater than 4." << endl;
   else
      cout << "The element of hash_map hm1 with a key > 4 is: "
           << hm1_RcIter -> second << "." << endl;

   // The element at a specific location in the hash_map can be found
   // using a dereferenced iterator addressing the location
   hm1_AcIter = hm1.begin( );
   hm1_RcIter = hm1. upper_bound ( hm1_AcIter -> first );
   cout << "The 1st element of hm1 with a key greater than that\n"
        << "of the initial element of hm1 is: "
        << hm1_RcIter -> second << "." << endl;
}
The first element of hash_map hm1 with a key greater than 2 is: 30.
The hash_map hm1 doesn't have an element with a key greater than 4.
The 1st element of hm1 with a key greater than that
of the initial element of hm1 is: 20.

hash_map::value_comp

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Mengembalikan objek fungsi yang menentukan urutan elemen dalam dengan hash_map membandingkan nilai kuncinya.

value_compare value_comp() const;

Tampilkan Nilai

Mengembalikan objek fungsi perbandingan yang hash_map digunakan untuk mengurutkan elemennya.

Keterangan

hash_map mUntuk , jika dua elemen e1 (k1, d1) dan e2 (k2, d2) adalah objek jenis value_type, di mana k1 dan k2 merupakan kunci jenisnya key_type dan d1 dan d2 merupakan data jenisnya mapped_type, maka m.value_comp()(e1, e2) setara dengan m.key_comp()(k1, k2). Objek tersimpan menentukan fungsi anggota

bool operator(value_type& left, value_type& right);

yang mengembalikan true jika nilai left kunci dari presede dan tidak sama dengan nilai kunci dalam urutan pengurutan right .

Contoh

// hash_map_value_comp.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;

   hash_map <int, int, hash_compare<int, less<int> > > hm1;
   hash_map <int, int, hash_compare<int, less<int> > >
   ::value_compare vc1 = hm1.value_comp( );
   pair< hash_map<int,int>::iterator, bool > pr1, pr2;

   pr1= hm1.insert ( hash_map <int, int> :: value_type ( 1, 10 ) );
   pr2= hm1.insert ( hash_map <int, int> :: value_type ( 2, 5 ) );

   if( vc1( *pr1.first, *pr2.first ) == true )
   {
      cout << "The element ( 1,10 ) precedes the element ( 2,5 )."
           << endl;
   }
   else
   {
      cout << "The element ( 1,10 ) does not precede the element ( 2,5 )."
           << endl;
   }

   if( vc1 ( *pr2.first, *pr1.first ) == true )
   {
      cout << "The element ( 2,5 ) precedes the element ( 1,10 )."
           << endl;
   }
   else
   {
      cout << "The element ( 2,5 ) does not precede the element ( 1,10 )."
           << endl;
   }
}

hash_map::value_type

Catatan

API ini kedaluarsa. Alternatifnya adalah unordered_map Kelas.

Jenis yang mewakili jenis objek yang disimpan dalam hash_map.

typedef pair<const Key, Type> value_type;

Keterangan

value_type dinyatakan pair<const key_type, mapped_type> dan bukan pair<key_type, mapped_type> karena kunci kontainer asosiatif mungkin tidak diubah menggunakan iterator atau referensi yang tidak konstant.

Contoh

// hash_map_value_type.cpp
// compile with: /EHsc
#include <hash_map>
#include <iostream>

int main( )
{
   using namespace std;
   using namespace stdext;
   typedef pair <const int, int> cInt2Int;
   hash_map <int, int> hm1;
   hash_map <int, int> :: key_type key1;
   hash_map <int, int> :: mapped_type mapped1;
   hash_map <int, int> :: value_type value1;
   hash_map <int, int> :: iterator pIter;

   // value_type can be used to pass the correct type
   // explicitly to avoid implicit type conversion
   hm1.insert ( hash_map <int, int> :: value_type ( 1, 10 ) );

   // Compare other ways to insert objects into a hash_map
   hm1.insert ( cInt2Int ( 2, 20 ) );
   hm1[ 3 ] = 30;

   // Initializing key1 and mapped1
   key1 = ( hm1.begin( ) -> first );
   mapped1 = ( hm1.begin( ) -> second );

   cout << "The key of first element in the hash_map is "
        << key1 << "." << endl;

   cout << "The data value of first element in the hash_map is "
        << mapped1 << "." << endl;

   // The following line would cause an error because
   // the value_type is not assignable
   // value1 = cInt2Int ( 4, 40 );

   cout  << "The keys of the mapped elements are:";
   for ( pIter = hm1.begin( ) ; pIter != hm1.end( ) ; pIter++ )
      cout << " " << pIter -> first;
   cout << "." << endl;

   cout  << "The values of the mapped elements are:";
   for ( pIter = hm1.begin( ) ; pIter != hm1.end( ) ; pIter++ )
      cout << " " << pIter -> second;
   cout << "." << endl;
}
The key of first element in the hash_map is 1.
The data value of first element in the hash_map is 10.
The keys of the mapped elements are: 1 2 3.
The values of the mapped elements are: 10 20 30.

Lihat juga

Keamanan utas di Pustaka Standar C++
Referensi pustaka standar C++