map Kelas

Digunakan untuk penyimpanan dan pengambilan data dari koleksi di mana setiap elemen adalah pasangan yang memiliki nilai data dan kunci pengurutan. Nilai kunci unik dan digunakan untuk mengurutkan data secara otomatis.

Nilai elemen dalam peta dapat diubah secara langsung. Nilai kunci adalah konstanta dan tidak dapat diubah. Sebagai gantinya, nilai kunci yang terkait dengan elemen lama harus dihapus, dan nilai kunci baru harus disisipkan untuk elemen baru.

Sintaks

template <class Key,
    class Type,
    class Traits = less<Key>,
    class Allocator=allocator<pair <const Key, Type>>>
class map;

Parameter

Key
Jenis data kunci yang akan disimpan di map.

Type
Jenis data elemen yang akan disimpan di map.

Traits
Jenis yang menyediakan objek fungsi yang dapat membandingkan dua nilai elemen sebagai kunci pengurutan untuk menentukan urutan relatifnya di map. Argumen ini bersifat opsional dan predikat less<Key> biner adalah nilai default.

Di C++14, Anda dapat mengaktifkan pencarian heterogen dengan menentukan std::less<> predikat yang tidak memiliki parameter jenis. Lihat Pencarian Heterogen di Kontainer Asosiatif untuk informasi selengkapnya.

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

Keterangan

Kelas peta Pustaka Standar C++ adalah:

  • Kontainer ukuran variabel yang secara efisien mengambil nilai elemen berdasarkan nilai kunci terkait.

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

  • Diurutkan, karena elemennya diurutkan menurut nilai kunci sesuai dengan fungsi perbandingan yang ditentukan.

  • Unik. karena setiap elemennya harus memiliki kunci yang unik.

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

  • Templat kelas, karena fungsionalitas yang disediakannya bersifat generik dan independen dari elemen atau jenis kunci. Jenis data yang digunakan untuk elemen dan kunci ditentukan sebagai parameter dalam templat kelas bersama dengan fungsi perbandingan dan alokator.

Iterator yang disediakan oleh kelas peta adalah iterator dua arah, tetapi insert fungsi anggota kelas dan map memiliki versi yang mengambil sebagai parameter templat iterator input yang lebih lemah, yang persyaratan fungsinya lebih sedikit dari yang dijamin oleh kelas iterator dua arah. Konsep iterator yang berbeda terkait dengan penyempurnaan dalam fungsionalitasnya. Setiap konsep iterator memiliki serangkaian persyaratannya sendiri, dan algoritma yang bekerja dengannya harus dibatasi oleh persyaratan tersebut. Iterator input dapat didereferensikan untuk merujuk ke beberapa objek dan dapat dinaikkan ke iterator berikutnya dalam urutan.

Sebaiknya Anda mendasarkan pilihan jenis kontainer pada jenis pencarian dan penyisipan yang diperlukan oleh aplikasi. Kontainer asosiatif dioptimalkan untuk operasi pencarian, penyisipan, dan penghapusan. Fungsi anggota yang secara eksplisit mendukung operasi ini melakukannya dalam waktu terburuk yang sebanding dengan logaritma jumlah elemen dalam kontainer. Menyisipkan elemen tidak membatalkan iterator, dan menghapus elemen hanya membatalkan iterator yang secara khusus menunjuk ke elemen yang dihapus.

Kami menyarankan agar Anda membuat peta kontainer pilihan asosiatif ketika kondisi yang mengaitkan nilai dengan kunci dipenuhi oleh aplikasi. Model untuk struktur semacam ini adalah daftar yang diurutkan dari kata kunci yang terjadi secara unik yang memiliki nilai string terkait yang memberikan definisi. Jika kata memiliki lebih dari satu definisi yang benar, sehingga kunci tidak unik, maka multimap akan menjadi kontainer pilihan. Jika hanya daftar kata yang disimpan, maka satu set akan menjadi kontainer yang sesuai. Jika beberapa kemunculan kata diizinkan, maka multiset akan sesuai.

Peta mengurutkan elemen yang dikontrolnya dengan memanggil objek fungsi tersimpan jenis key_compare. Objek tersimpan ini adalah fungsi perbandingan key_comp yang diakses dengan memanggil metode . Secara umum, dua elemen yang diberikan dibandingkan dengan menentukan apakah satu kurang dari yang lain atau apakah elemen tersebut setara. Karena semua elemen dibandingkan, urutan yang diurutkan dari elemen yang tidak setara dibuat.

Catatan

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 argumen x dan y, dan nilai true pengembalian atau false. Pemesanan yang diberlakukan pada satu set 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, urutan menjadi total (dalam arti bahwa semua elemen diurutkan sehubungan satu sama lain), dan kunci yang cocok akan tidak dapat dicermati dari satu sama lain.

Di C++14, Anda dapat mengaktifkan pencarian heterogen dengan menentukan std::less<> atau std::greater<> predikat yang tidak memiliki parameter jenis. Lihat Pencarian Heterogen di Kontainer Asosiatif untuk informasi selengkapnya.

Anggota

Konstruktor

Nama Deskripsi
map Membuat daftar ukuran tertentu atau dengan elemen nilai tertentu atau dengan tertentu allocator atau sebagai salinan dari beberapa peta lainnya.

Typedefs

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

Fungsi anggota

Fungsi anggota Deskripsi
at Menemukan elemen dengan nilai kunci yang ditentukan.
begin Mengembalikan iterator yang menunjuk ke elemen pertama dalam map.
cbegin Mengembalikan iterator const yang menunjuk ke elemen pertama dalam map.
cend Mengembalikan iterator const past-the-end.
clear Menghapus semua elemen dari map.
containsC++20 Periksa apakah ada elemen dengan kunci yang ditentukan di map.
count Mengembalikan jumlah elemen dalam peta yang kuncinya cocok dengan kunci yang ditentukan dalam parameter.
crbegin Mengembalikan iterator const yang menunjuk ke elemen pertama dalam reversed map.
crend Mengembalikan iterator const yang menunjuk ke lokasi setelah elemen terakhir dalam terbalik map.
emplace Menyisipkan elemen yang dibangun di tempat ke mapdalam .
emplace_hint Menyisipkan elemen yang dibangun di tempat ke mapdalam , dengan petunjuk penempatan.
empty Mengembalikan true jika kosong map .
end Mengembalikan iterator past-the-end.
equal_range Mengembalikan sepasang iterator. Iterator pertama dalam pasangan menunjuk ke elemen pertama dalam map dengan kunci yang lebih besar dari kunci yang ditentukan. Iterator kedua dalam pasangan menunjuk ke elemen pertama di map dengan kunci yang sama dengan atau lebih besar dari kunci.
erase Menghapus elemen atau rentang elemen dalam peta dari posisi yang ditentukan.
find Mengembalikan iterator yang menunjuk ke lokasi elemen dalam map yang memiliki kunci yang sama dengan kunci yang ditentukan.
get_allocator Mengembalikan salinan allocator objek yang digunakan untuk membuat map.
insert Menyisipkan elemen atau rentang elemen ke dalam pada map posisi tertentu.
key_comp Mengembalikan salinan objek perbandingan yang digunakan untuk mengurutkan kunci dalam map.
lower_bound Mengembalikan iterator ke elemen pertama dalam map yang memiliki nilai kunci yang sama dengan atau lebih besar dari kunci yang ditentukan.
max_size Mengembalikan panjang mapmaksimum .
rbegin Mengembalikan iterator yang menunjuk ke elemen pertama dalam terbalik map.
rend Mengembalikan iterator yang menunjuk ke lokasi setelah elemen terakhir dalam terbalik map.
size Mengembalikan jumlah elemen dalam map.
swap Menukar elemen dari dua peta.
upper_bound Mengembalikan iterator ke elemen pertama dalam map yang memiliki nilai kunci yang lebih besar dari kunci yang ditentukan.
value_comp Mengambil salinan objek perbandingan yang digunakan untuk mengurutkan nilai elemen dalam map.

Operators

Nama Deskripsi
operator[] Menyisipkan elemen ke dalam peta dengan nilai kunci tertentu.
operator= Mengganti elemen peta dengan salinan peta lain.

allocator_type

Jenis yang mewakili kelas alokator untuk objek peta.

typedef Allocator allocator_type;

Contoh

Lihat contoh untuk get_allocator contoh yang menggunakan allocator_type.

at

Menemukan elemen dengan nilai kunci tertentu.

Type& at(const Key& key);

const Type& 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 Kelas.

Contoh

// map_at.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

typedef std::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);
    }

begin

Mengembalikan iterator yang menangani elemen pertama di map.

const_iterator begin() const;

iterator begin();

Tampilkan Nilai

Iterator dua arah yang menangani elemen pertama di map atau lokasi yang menggantikan peta kosong.

Contoh

// map_begin.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int> m1;

   map <int, int> :: iterator m1_Iter;
   map <int, int> :: const_iterator m1_cIter;
   typedef pair <int, int> Int_Pair;

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

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

   m1_Iter = m1.begin ( );
   m1.erase ( m1_Iter );

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

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

cbegin

Mengembalikan iterator const yang membahas lokasi tepat di luar elemen terakhir dalam rentang.

const_iterator cbegin() const;

Tampilkan Nilai

Iterator const dua arah yang membahas elemen pertama dalam 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 bersama dengan auto kata kunci pengurangan 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

cend

Mengembalikan iterator const yang membahas lokasi tepat di luar elemen terakhir dalam rentang.

const_iterator cend() const;

Tampilkan Nilai

Iterator const akses dua arah 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 bersama dengan auto kata kunci pengurangan 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.

clear

Menghapus semua elemen peta.

void clear();

Contoh

Contoh berikut menunjukkan penggunaan map::clear fungsi anggota.

// map_clear.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main()
{
    using namespace std;
    map<int, int> m1;
    map<int, int>::size_type i;
    typedef pair<int, int> Int_Pair;

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

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

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

const_iterator

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

typedef implementation-defined const_iterator;

Keterangan

Jenis const_iterator tidak dapat digunakan untuk mengubah nilai elemen.

yang const_iterator ditentukan oleh peta menunjuk ke elemen yang merupakan objek dari , yaitu jenis value_typepair<constKey, Type>, yang anggota pertamanya adalah kunci elemen dan anggota keduanya adalah datum yang dipetakan yang dipegang oleh elemen .

Untuk mendereferensikan const_iteratorcIter yang menunjuk ke elemen dalam peta, 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 yang menggunakan const_iterator.

const_pointer

Jenis yang menyediakan penunjuk ke const elemen dalam peta.

typedef typename 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 objek peta.

const_reference

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

typedef typename allocator_type::const_reference const_reference;

Contoh

// map_const_ref.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int> m1;
   typedef pair <int, int> Int_Pair;

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

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

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

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

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

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

const_reverse_iterator

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

typedef std::reverse_iterator<const_iterator> const_reverse_iterator;

Keterangan

Jenis const_reverse_iterator tidak dapat mengubah nilai elemen dan digunakan untuk melakukan iterasi melalui peta secara terbalik.

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

Untuk mendereferensikan const_reverse_iterator crIter yang menunjuk ke elemen dalam peta, 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.

count

Mengembalikan jumlah elemen dalam peta yang kuncinya cocok dengan kunci yang ditentukan parameter.

size_type count(const Key& key) const;

Parameter

key
Nilai kunci elemen yang akan dicocokkan dari peta.

Tampilkan Nilai

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

Keterangan

Fungsi anggota mengembalikan jumlah elemen x dalam rentang

[ lower_bound(key), upper_bound(key) )

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

Contoh

Contoh berikut menunjukkan penggunaan map::count fungsi anggota.

// map_count.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main()
{
    using namespace std;
    map<int, int> m1;
    map<int, int>::size_type i;
    typedef pair<int, int> Int_Pair;

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

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

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

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

contains

Memeriksa apakah ada elemen dengan kunci yang ditentukan di map.

bool contains(const Key& key) const;
template<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. Lihat Pencarian heterogen dalam kontainer asosiatif untuk informasi selengkapnya.

Contoh

// Requires /std:c++20 or /std:c++latest
#include <map>
#include <string>
#include <iostream>
#include <functional>

int main()
{
    std::map<int, bool> m = {{0, true},{1, false}};

    std::cout << std::boolalpha; // so booleans show as 'true' or 'false'
    std::cout << m.contains(1) << '\n';
    std::cout << m.contains(2) << '\n';

    // call template function
    std::map<std::string, int, std::less<>> m2 = {{"ten", 10}, {"twenty", 20}, {"thirty", 30}};
    std::cout << m2.contains("ten");

    return 0;
}
true
false
true

crbegin

Mengembalikan iterator const yang menangani elemen pertama dalam peta terbalik.

const_reverse_iterator crbegin() const;

Tampilkan Nilai

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

Keterangan

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

Dengan nilai crbeginpengembalian , map objek tidak dapat dimodifikasi

crbegin dapat digunakan untuk melakukan iterasi melalui mundur map .

Contoh

// map_crbegin.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int> m1;

   map <int, int> :: const_reverse_iterator m1_crIter;
   typedef pair <int, int> Int_Pair;

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

   m1_crIter = m1.crbegin( );
   cout << "The first element of the reversed map m1 is "
        << m1_crIter -> first << "." << endl;
}
The first element of the reversed map m1 is 3.

crend

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

const_reverse_iterator crend() const;

Tampilkan Nilai

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

Keterangan

crend digunakan dengan peta terbalik seperti end yang digunakan dengan map.

Dengan nilai crendpengembalian , map objek tidak dapat dimodifikasi.

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

Nilai yang dikembalikan oleh crend tidak boleh didereferensikan.

Contoh

// map_crend.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int> m1;

   map <int, int> :: const_reverse_iterator m1_crIter;
   typedef pair <int, int> Int_Pair;

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

   m1_crIter = m1.crend( );
   m1_crIter--;
   cout << "The last element of the reversed map m1 is "
        << m1_crIter -> first << "." << endl;
}
The last element of the reversed map m1 is 1.

difference_type

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

typedef allocator_type::difference_type difference_type;

Keterangan

difference_type adalah jenis yang dikembalikan saat mengurangi atau menambah melalui iterator kontainer. difference_type biasanya digunakan untuk mewakili jumlah elemen dalam rentang [ pertama, terakhir) antara iterator first dan last, termasuk elemen yang diarahkan oleh first dan rentang elemen hingga, tetapi tidak termasuk, elemen yang ditunjukkan oleh last.

Meskipun difference_type tersedia untuk semua iterator yang memenuhi persyaratan iterator input, yang mencakup kelas iterator dua arah yang didukung oleh kontainer yang dapat dibalik seperti set, pengurangan antara iterator hanya didukung oleh iterator akses acak yang disediakan oleh kontainer akses acak seperti vektor.

Contoh

// map_diff_type.cpp
// compile with: /EHsc
#include <iostream>
#include <map>
#include <algorithm>

int main( )
{
   using namespace std;
   map <int, int> m1;
   typedef pair <int, int> Int_Pair;

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

   map <int, int>::iterator m1_Iter, m1_bIter, m1_eIter;
   m1_bIter = m1.begin( );
   m1_eIter = m1.end( );

   // Count the number of elements in a map
   map <int, int>::difference_type  df_count = 1;
   m1_Iter = m1.begin( );
   while ( m1_Iter != m1_eIter)
   {
      df_count++;
      m1_Iter++;
   }

   cout << "The number of elements in the map m1 is: "
        << df_count << "." << endl;
}
The number of elements in the map m1 is: 4.

emplace

Menyisipkan elemen yang dibangun di tempat (tidak ada operasi salin atau pemindahan yang dilakukan) ke dalam peta.

template <class... Args>
pair<iterator, bool>
emplace(
    Args&&... args);

Parameter

args
Argumen yang diteruskan untuk membuat elemen untuk dimasukkan ke dalam peta kecuali sudah berisi elemen yang nilainya diurutkan secara setara.

Tampilkan Nilai

Komponennya boolpair adalah true jika penyisipan dibuat, dan false jika peta sudah berisi elemen nilai yang setara dalam pengurutan. Komponen iterator dari pasangan nilai kembali menunjuk ke elemen yang baru disisipkan jika bool komponen tersebut benar, atau ke elemen yang ada jika bool komponen salah.

Untuk mengakses komponen iterator dari pairpr, gunakan pr.first; untuk mendereferensikannya, gunakan *pr.first. Untuk mengakses bool komponen, gunakan pr.second. Misalnya, lihat kode sampel nanti di artikel ini.

Keterangan

Tidak ada iterator atau referensi yang tidak valid oleh fungsi ini.

Selama penempatan, jika pengecualian dilemparkan, status kontainer tidak dimodifikasi.

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.

Contoh

// map_emplace.cpp
// compile with: /EHsc
#include <map>
#include <string>
#include <iostream>

using namespace std;

template <typename M> void print(const M& m) {
    cout << m.size() << " elements: ";

    for (const auto& p : m) {
        cout << "(" << p.first << ", " << p.second << ") ";
    }

    cout << endl;
}

int main()
{
    map<int, string> m1;

    auto ret = m1.emplace(10, "ten");

    if (!ret.second){
        auto pr = *ret.first;
        cout << "Emplace failed, element with key 10 already exists."
            << endl << "  The existing element is (" << pr.first << ", " << pr.second << ")"
            << endl;
        cout << "map not modified" << endl;
    }
    else{
        cout << "map modified, now contains ";
        print(m1);
    }
    cout << endl;

    ret = m1.emplace(10, "one zero");

    if (!ret.second){
        auto pr = *ret.first;
        cout << "Emplace failed, element with key 10 already exists."
            << endl << "  The existing element is (" << pr.first << ", " << pr.second << ")"
            << endl;
    }
    else{
        cout << "map modified, now contains ";
        print(m1);
    }
    cout << endl;
}

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 untuk dimasukkan ke dalam peta kecuali peta sudah berisi elemen tersebut atau, lebih umum, kecuali sudah berisi elemen yang kuncinya diurutkan secara setara.

where
Tempat untuk mulai mencari titik penyisipan yang benar. (Jika titik itu segera mendahului di mana, penyisipan dapat terjadi dalam waktu konstanta yang diamortisasi alih-alih waktu logaritmik.)

Tampilkan Nilai

Iterator ke elemen yang baru disisipkan.

Jika penyisipan gagal karena elemen sudah ada, mengembalikan iterator ke elemen yang ada dengan kuncinya.

Keterangan

Tidak ada iterator atau referensi yang tidak valid oleh fungsi ini.

Selama penempatan, jika pengecualian dilemparkan, status kontainer tidak dimodifikasi.

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.

Contoh

// map_emplace.cpp
// compile with: /EHsc
#include <map>
#include <string>
#include <iostream>

using namespace std;

template <typename M> void print(const M& m) {
    cout << m.size() << " elements: " << endl;

    for (const auto& p : m) {
        cout << "(" << p.first <<  "," << p.second << ") ";
    }

    cout << endl;
}

int main()
{
    map<string, string> m1;

    // Emplace some test data
    m1.emplace("Anna", "Accounting");
    m1.emplace("Bob", "Accounting");
    m1.emplace("Carmine", "Engineering");

    cout << "map starting data: ";
    print(m1);
    cout << endl;

    // Emplace with hint
    // m1.end() should be the "next" element after this emplacement
    m1.emplace_hint(m1.end(), "Doug", "Engineering");

    cout << "map modified, now contains ";
    print(m1);
    cout << endl;
}

empty

Menguji apakah peta kosong.

bool empty() const;

Tampilkan Nilai

true jika peta kosong; false jika peta tidak ada.

Contoh

// map_empty.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int> m1, m2;

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

   if ( m1.empty( ) )
      cout << "The map m1 is empty." << endl;
   else
      cout << "The map m1 is not empty." << endl;

   if ( m2.empty( ) )
      cout << "The map m2 is empty." << endl;
   else
      cout << "The map m2 is not empty." << endl;
}
The map m1 is not empty.
The map m2 is empty.

end

Mengembalikan iterator past-the-end.

const_iterator end() const;

iterator end();

Tampilkan Nilai

Iterator past-the-end. Jika peta kosong, maka map::end() == map::begin().

Keterangan

end digunakan untuk menguji apakah iterator telah melewati akhir petanya.

Nilai yang dikembalikan oleh end tidak boleh didereferensikan.

Untuk contoh kode, lihat map::find.

equal_range

Mengembalikan sepasang iterator yang mewakili lower_bound kunci dan upper_bound 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 peta yang sedang dicari.

Tampilkan Nilai

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

Contoh

// map_equal_range.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   typedef map <int, int, less<int> > IntMap;
   IntMap m1;
   map <int, int> :: const_iterator m1_RcIter;
   typedef pair <int, int> Int_Pair;

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

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

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

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

   // Compare the upper_bound called directly
   m1_RcIter = m1.upper_bound( 2 );

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

   p2 = m1.equal_range( 4 );

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

erase

Menghapus elemen atau rentang elemen dalam peta 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 peta.

Contoh

// map_erase.cpp
// compile with: /EHsc
#include <map>
#include <string>
#include <iostream>
#include <iterator> // next() and prev() helper functions
#include <utility>  // make_pair()

using namespace std;

using mymap = map<int, string>;

void printmap(const mymap& m) {
    for (const auto& elem : m) {
        cout << " [" << elem.first << ", " << elem.second << "]";
    }
    cout << endl << "size() == " << m.size() << endl << endl;
}

int main()
{
    mymap m1;

    // Fill in some data to test with, one at a time
    m1.insert(make_pair(1, "A"));
    m1.insert(make_pair(2, "B"));
    m1.insert(make_pair(3, "C"));
    m1.insert(make_pair(4, "D"));
    m1.insert(make_pair(5, "E"));

    cout << "Starting data of map m1 is:" << endl;
    printmap(m1);
    // The 1st member function removes an element at a given position
    m1.erase(next(m1.begin()));
    cout << "After the 2nd element is deleted, the map m1 is:" << endl;
    printmap(m1);

    // Fill in some data to test with, one at a time, using an initializer list
    mymap m2
    {
        { 10, "Bob" },
        { 11, "Rob" },
        { 12, "Robert" },
        { 13, "Bert" },
        { 14, "Bobby" }
    };

    cout << "Starting data of map m2 is:" << endl;
    printmap(m2);
    // The 2nd member function removes elements
    // in the range [First, Last)
    m2.erase(next(m2.begin()), prev(m2.end()));
    cout << "After the middle elements are deleted, the map m2 is:" << endl;
    printmap(m2);

    mymap m3;

    // Fill in some data to test with, one at a time, using emplace
    m3.emplace(1, "red");
    m3.emplace(2, "yellow");
    m3.emplace(3, "blue");
    m3.emplace(4, "green");
    m3.emplace(5, "orange");
    m3.emplace(6, "purple");
    m3.emplace(7, "pink");

    cout << "Starting data of map m3 is:" << endl;
    printmap(m3);
    // The 3rd member function removes elements with a given Key
    mymap::size_type count = m3.erase(2);
    // The 3rd member function also returns the number of elements removed
    cout << "The number of elements removed from m3 is: " << count << "." << endl;
    cout << "After the element with a key of 2 is deleted, the map m3 is:" << endl;
    printmap(m3);
}

find

Mengembalikan iterator yang merujuk ke lokasi elemen dalam peta 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 peta yang sedang dicari.

Tampilkan Nilai

Iterator yang mengacu pada lokasi elemen dengan kunci yang ditentukan, atau lokasi berhasil elemen terakhir di map (map::end()) jika tidak ada kecocokan yang ditemukan untuk kunci.

Keterangan

Fungsi anggota mengembalikan iterator yang mengacu pada elemen dalam map kunci pengurutan yang 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, objek peta tidak dapat dimodifikasi. Jika nilai find pengembalian ditetapkan ke iterator, objek peta dapat dimodifikasi

Contoh

// compile with: /EHsc /W4 /MTd
#include <map>
#include <iostream>
#include <vector>
#include <string>
#include <utility>  // make_pair()

using namespace std;

template <typename A, typename B> void print_elem(const pair<A, B>& p) {
    cout << "(" << p.first << ", " << p.second << ") ";
}

template <typename T> void print_collection(const T& t) {
    cout << t.size() << " elements: ";

    for (const auto& p : t) {
        print_elem(p);
    }
    cout << endl;
}

template <typename C, class T> void findit(const C& c, T val) {
    cout << "Trying find() on value " << val << endl;
    auto result = c.find(val);
    if (result != c.end()) {
        cout << "Element found: "; print_elem(*result); cout << endl;
    } else {
        cout << "Element not found." << endl;
    }
}

int main()
{
    map<int, string> m1({ { 40, "Zr" }, { 45, "Rh" } });
    cout << "The starting map m1 is (key, value):" << endl;
    print_collection(m1);

    vector<pair<int, string>> v;
    v.push_back(make_pair(43, "Tc"));
    v.push_back(make_pair(41, "Nb"));
    v.push_back(make_pair(46, "Pd"));
    v.push_back(make_pair(42, "Mo"));
    v.push_back(make_pair(44, "Ru"));
    v.push_back(make_pair(44, "Ru")); // attempt a duplicate

    cout << "Inserting the following vector data into m1:" << endl;
    print_collection(v);

    m1.insert(v.begin(), v.end());

    cout << "The modified map m1 is (key, value):" << endl;
    print_collection(m1);
    cout << endl;
    findit(m1, 45);
    findit(m1, 6);
}

get_allocator

Mengembalikan salinan objek alokator yang digunakan untuk membuat peta.

allocator_type get_allocator() const;

Tampilkan Nilai

Alokator yang digunakan oleh peta.

Keterangan

Alokator untuk kelas peta 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

// map_get_allocator.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int>::allocator_type m1_Alloc;
   map <int, int>::allocator_type m2_Alloc;
   map <int, double>::allocator_type m3_Alloc;
   map <int, int>::allocator_type m4_Alloc;

   // The following lines declare objects
   // that use the default allocator.
   map <int, int> m1;
   map <int, int, allocator<int> > m2;
   map <int, double, allocator<double> > m3;

   m1_Alloc = m1.get_allocator( );
   m2_Alloc = m2.get_allocator( );
   m3_Alloc = m3.get_allocator( );

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

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

   // The following line creates a map m4
   // with the allocator of map m1.
   map <int, int> m4( less<int>( ), m1_Alloc );

   m4_Alloc = m4.get_allocator( );

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

insert

Menyisipkan elemen atau rentang elemen ke dalam peta.

// (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 untuk dimasukkan ke dalam peta kecuali sudah berisi elemen yang kuncinya diurutkan secara setara.

Where
Tempat untuk mulai mencari titik penyisipan yang benar. (Jika titik itu segera mendahului Where, penyisipan dapat terjadi dalam waktu konstanta diamortisasi alih-alih waktu logaritmik.)

ValTy
Parameter templat yang menentukan jenis argumen yang dapat digunakan peta 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 benar jika penyisipan dibuat, dan salah jika peta sudah berisi elemen yang kuncinya memiliki nilai yang setara dalam urutan. Komponen iterator dari pasangan nilai kembali menunjuk ke elemen yang baru disisipkan jika bool komponen tersebut benar, atau ke elemen yang ada jika bool komponen salah.

Fungsi anggota elemen-dengan-petunjuk tunggal, (3) dan (4), mengembalikan iterator yang menunjuk ke posisi di mana elemen baru dimasukkan ke dalam peta 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, status kontainer tidak dimodifikasi. 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 peta 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 peta.

Untuk penyisipan elemen yang dibangun di tempat—yaitu, tidak ada operasi salin atau pemindahan yang dilakukan—lihat map::emplace dan map::emplace_hint.

Contoh

// map_insert.cpp
// compile with: /EHsc
#include <map>
#include <iostream>
#include <string>
#include <vector>
#include <utility>  // make_pair()

using namespace std;

template <typename M> void print(const M& m) {
    cout << m.size() << " elements: ";

    for (const auto& p : m) {
        cout << "(" << p.first << ", " << p.second << ") ";
    }

    cout << endl;
}

int main()
{
    // insert single values
    map<int, int> m1;
    // call insert(const value_type&) version
    m1.insert({ 1, 10 });
    // call insert(ValTy&&) version
    m1.insert(make_pair(2, 20));

    cout << "The original key and mapped values of m1 are:" << endl;
    print(m1);

    // intentionally attempt a duplicate, single element
    auto ret = m1.insert(make_pair(1, 111));
    if (!ret.second){
        auto pr = *ret.first;
        cout << "Insert failed, element with key value 1 already exists."
            << endl << "  The existing element is (" << pr.first << ", " << pr.second << ")"
            << endl;
    }
    else{
        cout << "The modified key and mapped values of m1 are:" << endl;
        print(m1);
    }
    cout << endl;

    // single element, with hint
    m1.insert(m1.end(), make_pair(3, 30));
    cout << "The modified key and mapped values of m1 are:" << endl;
    print(m1);
    cout << endl;

    // The templatized version inserting a jumbled range
    map<int, int> m2;
    vector<pair<int, int>> v;
    v.push_back(make_pair(43, 294));
    v.push_back(make_pair(41, 262));
    v.push_back(make_pair(45, 330));
    v.push_back(make_pair(42, 277));
    v.push_back(make_pair(44, 311));

    cout << "Inserting the following vector data into m2:" << endl;
    print(v);

    m2.insert(v.begin(), v.end());

    cout << "The modified key and mapped values of m2 are:" << endl;
    print(m2);
    cout << endl;

    // The templatized versions move-constructing elements
    map<int, string>  m3;
    pair<int, string> ip1(475, "blue"), ip2(510, "green");

    // single element
    m3.insert(move(ip1));
    cout << "After the first move insertion, m3 contains:" << endl;
    print(m3);

    // single element with hint
    m3.insert(m3.end(), move(ip2));
    cout << "After the second move insertion, m3 contains:" << endl;
    print(m3);
    cout << endl;

    map<int, int> m4;
    // Insert the elements from an initializer_list
    m4.insert({ { 4, 44 }, { 2, 22 }, { 3, 33 }, { 1, 11 }, { 5, 55 } });
    cout << "After initializer_list insertion, m4 contains:" << endl;
    print(m4);
    cout << endl;
}

iterator

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

typedef implementation-defined iterator;

Keterangan

Iterator yang ditentukan oleh peta menunjuk 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 Iterator yang menunjuk ke elemen dalam peta, 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.

Contoh

Lihat contoh untuk begin contoh cara mendeklarasikan dan menggunakan iterator.

key_comp

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

key_compare key_comp() const;

Tampilkan Nilai

Mengembalikan objek fungsi yang digunakan peta 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

// map_key_comp.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;

   map <int, int, less<int> > m1;
   map <int, int, less<int> >::key_compare kc1 = m1.key_comp( ) ;
   bool result1 = kc1( 2, 3 ) ;
   if( result1 == true )
   {
      cout << "kc1( 2,3 ) returns value of true, "
           << "where kc1 is the function object of m1."
           << endl;
   }
   else
   {
      cout << "kc1( 2,3 ) returns value of false "
           << "where kc1 is the function object of m1."
           << endl;
   }

   map <int, int, greater<int> > m2;
   map <int, int, greater<int> >::key_compare kc2 = m2.key_comp( );
   bool result2 = kc2( 2, 3 ) ;
   if( result2 == true )
   {
      cout << "kc2( 2,3 ) returns value of true, "
           << "where kc2 is the function object of m2."
           << endl;
   }
   else
   {
      cout << "kc2( 2,3 ) returns value of false, "
           << "where kc2 is the function object of m2."
           << endl;
   }
}
kc1( 2,3 ) returns value of true, where kc1 is the function object of m1.
kc2( 2,3 ) returns value of false, where kc2 is the function object of m2.

key_compare

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

typedef Traits key_compare;

Keterangan

key_compare adalah sinonim untuk parameter Traitstemplat .

Untuk informasi selengkapnya tentang Traits, lihat map topik Kelas .

Contoh

Lihat contoh untuk key_comp contoh cara mendeklarasikan dan menggunakan key_compare.

key_type

Jenis yang menjelaskan kunci pengurutan yang disimpan di setiap elemen peta.

typedef Key key_type;

Keterangan

key_type adalah sinonim untuk parameter Keytemplat .

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

Contoh

Lihat contoh untuk value_type contoh cara mendeklarasikan dan menggunakan key_type.

lower_bound

Mengembalikan iterator ke elemen pertama dalam peta 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 peta yang sedang dicari.

Tampilkan Nilai

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

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

Contoh

// map_lower_bound.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int> m1;
   map <int, int> :: const_iterator m1_AcIter, m1_RcIter;
   typedef pair <int, int> Int_Pair;

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

   m1_RcIter = m1.lower_bound( 2 );
   cout << "The first element of map m1 with a key of 2 is: "
        << m1_RcIter -> second << "." << endl;

   // If no match is found for this key, end( ) is returned
   m1_RcIter = m1. lower_bound ( 4 );

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

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

map

Membuat peta yang kosong atau merupakan salinan dari semua atau sebagian dari beberapa peta lainnya.

map();

explicit map(
    const Traits& Comp);

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

map(
    const map& Right);

map(
    map&& Right);

map(
    initializer_list<value_type> IList);

map(
    initializer_list<value_type> IList,
    const Traits& Comp);

map(
    initializer_list<value_type> IList,
    const Traits& Comp,
    const Allocator& Allocator);

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

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

template <class InputIterator>
map(
    InputIterator First,
    InputIterator Last,
    const Traits& Comp,
    const Allocator& Al);

Parameter

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

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

Right
Peta tempat set 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
initializer_list dari mana elemen akan disalin.

Keterangan

Semua konstruktor menyimpan jenis objek alokator yang mengelola penyimpanan memori untuk peta dan yang 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 peta mereka.

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

Tiga konstruktor pertama menentukan peta awal kosong, 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 explicit kunci menekan jenis konversi jenis otomatis tertentu.

Konstruktor keempat menentukan salinan peta Right.

Konstruktor kelima menentukan salinan peta dengan memindahkan Right.

Konstruktor ke-6, ke-7, dan ke-8 menggunakan initializer_list tempat untuk menyalin anggota.

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

Contoh

// map_map.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main()
{
    using namespace std;
    typedef pair <int, int> Int_Pair;
    map <int, int>::iterator m1_Iter, m3_Iter, m4_Iter, m5_Iter, m6_Iter, m7_Iter;
    map <int, int, less<int> >::iterator m2_Iter;

    // Create an empty map m0 of key type integer
    map <int, int> m0;

    // Create an empty map m1 with the key comparison
    // function of less than, then insert 4 elements
    map <int, int, less<int> > m1;
    m1.insert(Int_Pair(1, 10));
    m1.insert(Int_Pair(2, 20));
    m1.insert(Int_Pair(3, 30));
    m1.insert(Int_Pair(4, 40));

    // Create an empty map m2 with the key comparison
    // function of greater than, then insert 2 elements
    map <int, int, less<int> > m2;
    m2.insert(Int_Pair(1, 10));
    m2.insert(Int_Pair(2, 20));

    // Create a map m3 with the
    // allocator of map m1
    map <int, int>::allocator_type m1_Alloc;
    m1_Alloc = m1.get_allocator();
    map <int, int> m3(less<int>(), m1_Alloc);
    m3.insert(Int_Pair(3, 30));

    // Create a copy, map m4, of map m1
    map <int, int> m4(m1);

    // Create a map m5 by copying the range m1[ first,  last)
    map <int, int>::const_iterator m1_bcIter, m1_ecIter;
    m1_bcIter = m1.begin();
    m1_ecIter = m1.begin();
    m1_ecIter++;
    m1_ecIter++;
    map <int, int> m5(m1_bcIter, m1_ecIter);

    // Create a map m6 by copying the range m4[ first,  last)
    // and with the allocator of map m2
    map <int, int>::allocator_type m2_Alloc;
    m2_Alloc = m2.get_allocator();
    map <int, int> m6(m4.begin(), ++m4.begin(), less<int>(), m2_Alloc);

    cout << "m1 =";
    for (auto i : m1)
        cout << i.first << " " << i.second << ", ";
    cout << endl;

    cout << "m2 =";
    for(auto i : m2)
        cout << i.first << " " << i.second << ", ";
    cout << endl;

    cout << "m3 =";
    for (auto i : m3)
        cout << i.first << " " << i.second << ", ";
    cout << endl;

    cout << "m4 =";
    for (auto i : m4)
        cout << i.first << " " << i.second << ", ";
    cout << endl;

    cout << "m5 =";
    for (auto i : m5)
        cout << i.first << " " << i.second << ", ";
    cout << endl;

    cout << "m6 =";
    for (auto i : m6)
        cout << i.first << " " << i.second << ", ";
    cout << endl;

    // Create a map m7 by moving m5
    cout << "m7 =";
    map<int, int> m7(move(m5));
    for (auto i : m7)
        cout << i.first << " " << i.second << ", ";
    cout << endl;

    // Create a map m8 by copying in an initializer_list
    map<int, int> m8{ { { 1, 1 }, { 2, 2 }, { 3, 3 }, { 4, 4 } } };
    cout << "m8: = ";
    for (auto i : m8)
        cout << i.first << " " << i.second << ", ";
    cout << endl;

    // Create a map m9 with an initializer_list and a comparator
    map<int, int> m9({ { 5, 5 }, { 6, 6 }, { 7, 7 }, { 8, 8 } }, less<int>());
    cout << "m9: = ";
    for (auto i : m9)
        cout << i.first << " " << i.second << ", ";
    cout << endl;

    // Create a map m10 with an initializer_list, a comparator, and an allocator
    map<int, int> m10({ { 9, 9 }, { 10, 10 }, { 11, 11 }, { 12, 12 } }, less<int>(), m9.get_allocator());
    cout << "m10: = ";
    for (auto i : m10)
        cout << i.first << " " << i.second << ", ";
    cout << endl;
}

mapped_type

Jenis yang mewakili data yang disimpan dalam peta.

typedef Type mapped_type;

Keterangan

Jenisnya mapped_type adalah sinonim untuk parameter templat Jenis kelas.

Untuk informasi selengkapnya tentang Type, lihat map topik Kelas .

Contoh

Lihat contoh untuk value_type contoh cara mendeklarasikan dan menggunakan mapped_type.

max_size

Mengembalikan panjang maksimum peta.

size_type max_size() const;

Tampilkan Nilai

Panjang maksimum peta yang mungkin.

Contoh

// map_max_size.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int> m1;
   map <int, int> :: size_type i;

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

operator[]

Menyisipkan elemen ke dalam peta 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 peta m menggunakan di mana DataValue adalah nilai mapped_type elemen dengan nilai keym[key] = DataValue; kunci .

Saat menggunakan operator[] untuk menyisipkan elemen, referensi yang dikembalikan tidak menunjukkan apakah penyisipan mengubah elemen yang sudah ada sebelumnya atau membuat yang baru. Anggota berfungsi find dan insert dapat digunakan untuk menentukan apakah elemen dengan kunci tertentu sudah ada sebelum penyisipan.

Contoh

// map_op_insert.cpp
// compile with: /EHsc
#include <map>
#include <iostream>
#include <string>

int main( )
{
   using namespace std;
   typedef pair <const int, int> cInt2Int;
   map <int, int> m1;
   map <int, int> :: iterator pIter;

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

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

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

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

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

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

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

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

// insert by moving key
    map<string, int> c2;
    string str("abc");
    cout << "c2[move(str)] == " << c2[move(str)] << endl;
    cout << "c2["abc"] == " << c2["abc"] << endl;

    return (0);
}
The keys of the mapped elements are: 1 2 3.
The values of the mapped elements are: 10 20 30.
The keys of the mapped elements are now: 1 2 3 5.
The values of the mapped elements are now: 10 40 30 0.
c2[move(str)] == 0
c2["abc"] == 1

operator=

Mengganti elemen peta dengan salinan peta lain.

map& operator=(const map& right);
map& operator=(map&& right);

Parameter

right
yang map sedang disalin ke mapdalam .

Keterangan

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

Contoh

// map_operator_as.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

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

pointer

Jenis yang menyediakan penunjuk ke elemen dalam peta.

typedef typename allocator_type::pointer pointer;

Keterangan

Jenis pointer dapat digunakan untuk mengubah nilai elemen.

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

rbegin

Mengembalikan iterator yang menangani elemen pertama dalam peta terbalik.

const_reverse_iterator rbegin() const;

reverse_iterator rbegin();

Tampilkan Nilai

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

Keterangan

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

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

rbegin dapat digunakan untuk melakukan iterasi melalui peta ke belakang.

Contoh

// map_rbegin.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int> m1;

   map <int, int> :: iterator m1_Iter;
   map <int, int> :: reverse_iterator m1_rIter;
   map <int, int> :: const_reverse_iterator m1_crIter;
   typedef pair <int, int> Int_Pair;

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

   m1_rIter = m1.rbegin( );
   cout << "The first element of the reversed map m1 is "
        << m1_rIter -> first << "." << endl;

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

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

   // A map element can be erased by dereferencing to its key
   m1_rIter = m1.rbegin( );
   m1.erase ( m1_rIter -> first );

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

reference

Jenis yang menyediakan referensi ke elemen yang disimpan dalam peta.

typedef typename allocator_type::reference reference;

Contoh

// map_reference.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int> m1;
   typedef pair <int, int> Int_Pair;

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

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

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

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

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

   cout << "The data value of first element in the 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 map is 1.
The data value of first element in the map is 10.
The modified data value of first element is 15.

rend

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

const_reverse_iterator rend() const;

reverse_iterator rend();

Tampilkan Nilai

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

Keterangan

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

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

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

Nilai yang dikembalikan oleh rend tidak boleh didereferensikan.

Contoh

// map_rend.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int> m1;

   map <int, int> :: iterator m1_Iter;
   map <int, int> :: reverse_iterator m1_rIter;
   map <int, int> :: const_reverse_iterator m1_crIter;
   typedef pair <int, int> Int_Pair;

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

   m1_rIter = m1.rend( );
   m1_rIter--;
   cout << "The last element of the reversed map m1 is "
        << m1_rIter -> first << "." << endl;

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

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

   // A map element can be erased by dereferencing to its key
   m1_rIter = --m1.rend( );
   m1.erase ( m1_rIter -> first );

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

reverse_iterator

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

typedef std::reverse_iterator<iterator> reverse_iterator;

Keterangan

Jenis reverse_iterator tidak dapat mengubah nilai elemen dan digunakan untuk melakukan iterasi melalui peta secara terbalik.

yang reverse_iterator ditentukan oleh peta menunjuk ke elemen yang merupakan objek dari , yaitu jenis value_typepair<const Key, Type>, yang anggota pertamanya adalah kunci elemen dan anggota keduanya adalah datum yang dipetakan yang dipegang oleh elemen .

Untuk mendereferensikan rIter yang reverse_iteratormenunjuk ke elemen dalam peta, gunakan -> operator.

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

Contoh

Lihat contoh untuk rbegin contoh cara mendeklarasikan dan menggunakan reverse_iterator.

size

Mengembalikan jumlah elemen dalam map.

size_type size() const;

Tampilkan Nilai

Panjang peta saat ini.

Contoh

Contoh berikut menunjukkan penggunaan map::size fungsi anggota.

// map_size.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main()
{
    using namespace std;
    map<int, int> m1, m2;
    map<int, int>::size_type i;
    typedef pair<int, int> Int_Pair;

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

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

size_type

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

typedef typename allocator_type::size_type size_type;

Contoh

Lihat contoh untuk size contoh cara mendeklarasikan dan menggunakan size_type.

pertukaran

Menukar elemen dari dua peta.

void swap(
    map<Key, Type, Traits, Allocator>& right);

Parameter

right
Peta argumen yang menyediakan elemen yang akan ditukar dengan peta target.

Keterangan

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

Contoh

// map_swap.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int> m1, m2, m3;
   map <int, int>::iterator m1_Iter;
   typedef pair <int, int> Int_Pair;

   m1.insert ( Int_Pair ( 1, 10 ) );
   m1.insert ( Int_Pair ( 2, 20 ) );
   m1.insert ( Int_Pair ( 3, 30 ) );
   m2.insert ( Int_Pair ( 10, 100 ) );
   m2.insert ( Int_Pair ( 20, 200 ) );
   m3.insert ( Int_Pair ( 30, 300 ) );

   cout << "The original map m1 is:";
   for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
      cout << " " << m1_Iter -> second;
   cout   << "." << endl;

   // This is the member function version of swap
   //m2 is said to be the argument map; m1 the target map
   m1.swap( m2 );

   cout << "After swapping with m2, map m1 is:";
   for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
      cout << " " << m1_Iter -> second;
   cout  << "." << endl;

   // This is the specialized template version of swap
   swap( m1, m3 );

   cout << "After swapping with m3, map m1 is:";
   for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
      cout << " " << m1_Iter -> second;
   cout   << "." << endl;
}
The original map m1 is: 10 20 30.
After swapping with m2, map m1 is: 100 200.
After swapping with m3, map m1 is: 300.

upper_bound

Mengembalikan iterator ke elemen pertama dalam peta yang dengan kunci 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 peta yang sedang dicari.

Tampilkan Nilai

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

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

Contoh

// map_upper_bound.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;
   map <int, int> m1;
   map <int, int> :: const_iterator m1_AcIter, m1_RcIter;
   typedef pair <int, int> Int_Pair;

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

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

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

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

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

value_comp

Fungsi anggota mengembalikan objek fungsi yang menentukan urutan elemen dalam peta dengan membandingkan nilai kuncinya.

value_compare value_comp() const;

Tampilkan Nilai

Mengembalikan objek fungsi perbandingan yang digunakan peta untuk mengurutkan elemennya.

Keterangan

Untuk peta m, jika dua elemen e1(k1, d1) dan e2(k2, d2) adalah objek jenis value_type, di mana k1 dan k1 adalah kunci jenisnya key_type dan d1 dan d2 adalah 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

// map_value_comp.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

int main( )
{
   using namespace std;

   map <int, int, less<int> > m1;
   map <int, int, less<int> >::value_compare vc1 = m1.value_comp( );
   pair< map<int,int>::iterator, bool > pr1, pr2;

   pr1= m1.insert ( map <int, int> :: value_type ( 1, 10 ) );
   pr2= m1.insert ( 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;
   }
}
The element ( 1,10 ) precedes the element ( 2,5 ).
The element ( 2,5 ) does not precede the element ( 1,10 ).

value_type

Jenis objek yang disimpan sebagai elemen dalam peta.

typedef pair<const Key, Type> value_type;

Contoh

// map_value_type.cpp
// compile with: /EHsc
#include <map>
#include <iostream>

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

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

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

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

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

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

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

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

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

Baca juga

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