Sdílet prostřednictvím


multimap::insert

Vloží do vícenásobné mapování elementu nebo rozsahu prvků.

// (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 ); 

Parametry

Parametr

Popis

Val

Hodnota elementu, který má být vložena do vícenásobné mapování.

Where

Místo zahájení vyhledání správného bodu vložení.(Pokud tohoto bodu bezprostředně předchází Where, vložení může dojít v amortizovaný konstantní čas místo logaritmické času.)

ValTy

Parametr šablony, který určuje typ argumentu, mapy můžete vytvořit element value_typea předávat dokonalé Val jako argument.

First

Pozice prvního prvku, který chcete zkopírovat.

Last

Pozice bezprostředně za posledním prvkem, který chcete zkopírovat.

InputIterator

Argument funkce šablony, který splňuje požadavky vstupního iterátoru, který odkazuje na prvky typu, který lze použít k vytvoření objektů value_type.

IList

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

Vrácená hodnota

Jeden element vložení funkce členů (1) a (2), vrátí iterace pozice vložena nového elementu do vícenásobné mapování.

Jeden element s nápovědu členské funkce, (3) a (4) vrátí iterace odkazující na pozici vložena nového elementu do vícenásobné mapování.

Poznámky

Tato funkce budou neplatné žádné ukazatele nebo odkazy, ale může ke zrušení platnosti všech iterátory do kontejneru.

Při vložení pouze jeden prvek Pokud je vyvolána výjimka, stav kontejneru se nemění.Pokud je při vkládání více prvků vyvolána výjimka, kontejner zůstane v neurčeném, ale platném stavu.

Objekt value_type kontejneru je definice typu, který náleží do kontejneru a pro objekt multimap<K, V>::value_type je pair<const K, V>.Hodnota prvku je seřazená dvojice, ve které je první komponenta rovna hodnotě klíče a druhá komponenta je rovna datové hodnotě prvku.

Členskou funkci rozsahu: [5] vloží posloupnost hodnoty elementů do vícenásobné mapování, která odpovídá každý prvek řešit iterace v rozsahu [First, Last); Proto Last získat není vložena.Funkce člena kontejneru end() odkazuje na pozici bezprostředně za posledním prvkem v kontejneru – například příkaz m.insert(v.begin(), v.end()); vloží všechny elementy v do m.

Člen inicializátoru seznamu funkce (6) používá initializer_list ke zkopírování elementů do mapy.

Další informace o vložení prvku vytvořeného na místě – to znamená, že nejsou provedeny žádné operace kopírování nebo přesunutí – naleznete v tématech multimap::emplace a multimap::emplace_hint.

Příklad

// multimap_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 
    multimap<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
    m1.insert(make_pair(1, 111));

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

    // 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
    multimap<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
    multimap<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;

    multimap<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;
}

Výstup

The original key and mapped values of m1 are:
2 elements: (1, 10) (2, 20)
The modified key and mapped values of m1 are:
3 elements: (1, 10) (1, 111) (2, 20)
The modified key and mapped values of m1 are:
4 elements: (1, 10) (1, 111) (2, 20) (3, 30)

Inserting the following vector data into m2:
5 elements: (43, 294) (41, 262) (45, 330) (42, 277) (44, 311)
The modified key and mapped values of m2 are:
5 elements: (41, 262) (42, 277) (43, 294) (44, 311) (45, 330)

After the first move insertion, m3 contains:
1 elements: (475, blue)
After the second move insertion, m3 contains:
2 elements: (475, blue) (510, green)

After initializer_list insertion, m4 contains:
5 elements: (1, 11) (2, 22) (3, 33) (4, 44) (5, 55)

Požadavky

Záhlaví: < map >

Obor názvů: std

Viz také

Referenční dokumentace

map::insert

multimap – třída

Standardní knihovna šablon