Sdílet prostřednictvím


multimap::multimap

Zkonstruuje objekt multimap, který je prázdný, nebo který je kopií celého nebo části některého jiného objektu multimap.

multimap( );
explicit multimap(
    const Traits& Comp
);
multimap(
    const Traits& Comp,
    const Allocator& Al
);
map(
    const multimap& Right
);
multimap(
    multimap&& Right
);
multimap(
    initializer_list<value_type> IList
);
multimap(
    initializer_list<value_type> IList,
    const Compare& Comp
);
multimap(
    initializer_list<value_type> IList,
    const Compare& Comp, 
    const Allocator& Al
);
template<class InputIterator>
    multimap(
        InputIterator First,
        InputIterator Last
    );
template<class InputIterator>
    multimap(
        InputIterator First,
        InputIterator Last,
        const Traits& Comp
    );
template<class InputIterator>
    multimap(
        InputIterator First,
        InputIterator Last,
        const Traits& Comp,
    const Allocator& Al
    );

Parametry

Parametr

Popis

Al

Třída úložiště alokátoru pro použití s tímto objektem multimap, kterou je standardně třída Allocator.

Comp

Funkce porovnání typu constTraits použitá k seřazení prvků v objektu map, která má výchozí typ Traits.

Right

Objekt map, ze kterého je kopií vytvořen objekt set.

First

Pozice prvního prvku v rozsahu prvků, které se mají zkopírovat.

Last

Pozice prvního prvku mimo rozsah prvků, které se mají zkopírovat.

IList

initializer_list, ze kterého chcete kopírovat prvky.

Poznámky

Všechny konstruktory ukládají typ objektu allocator, který spravuje úložiště paměti objektu multimap, a který lze později vrátit voláním funkce get_allocator.Parametr allocator je často v deklaraci třídy vynechán a makra předzpracování jsou použita k nahrazení alternativních alokátorů.

Všechny konstruktory inicializují jejich objekt multimap.

Všechny konstruktory ukládají objekt funkce typu Traits, který slouží k vytvoření pořadí mezi klíči objektu multimap, a který lze později vrátit voláním funkce key_comp.

První tři konstruktory určují prázdný počáteční objekt multimap, druhý určuje typ funkce porovnání (Comp) použité při stanovení pořadí prvků a třetí explicitně určuje typ alokátoru (Al), který se má použít.Klíčové slovo explicit potlačí některé druhy automatického převodu typu.

Čtvrtý konstruktor určuje kopii parametru Right objektu multimap.

Pátý konstruktor určuje kopii objektu multimap přesunutím parametru Right.

Šestý, sedmý a osmý konstruktor kopíruje členy initializer_list.

Následující tři konstruktory kopírují rozsah [First, Last) objektu map se zvyšující se explicitností v určování typu funkce porovnání třídy Traits a alokátoru.

Příklad

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

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

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

    // Create an empty multimap m1 with the key comparison
    // function of less than, then insert 4 elements
    multimap <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 multimap m2 with the key comparison
    // function of geater than, then insert 2 elements
    multimap <int, int, less<int> > m2;
    m2.insert(Int_Pair(1, 10));
    m2.insert(Int_Pair(2, 20));

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

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

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

    // Create a multimap m6 by copying the range m4[_First, _Last)
    // and with the allocator of multimap m2
    multimap <int, int>::allocator_type m2_Alloc;
    m2_Alloc = m2.get_allocator();
    multimap <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 multimap m8 by copying in an initializer_list
    multimap<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 multimap m9 with an initializer_list and a comparator
    multimap<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 multimap m10 with an initializer_list, a comparator, and an allocator
    multimap<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;

}

Výsledek

  

Požadavky

Hlavička: <map>

Obor názvů: std

Viz také

Referenční dokumentace

multimap – třída

Standardní knihovna šablon