Udostępnij za pośrednictwem


multiset::insert

Wstawia element lub zakres elementów do zestaw wielokrotny.

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

Opis

Val

Wartość elementu do wstawienia do zestawu wielokrotnego.

Where

Miejsce, aby rozpocząć wyszukiwanie poprawne punkt wstawienia.(Jeśli tego punktu bezpośrednio przed Where, wstawiania może wystąpić w amortyzowanego czasu stała zamiast czasu logarytmicznej.)

ValTy

Parametr szablonu, który określa typ argumentu zestawu wielokrotnego służący do konstruowania elementu value_typei doskonałą przodu Val jako argumentu.

First

Pozycja pierwszego elementu do skopiowania.

Last

Pozycja poza ostatni element do skopiowania.

InputIterator

Argument funkcji szablonu, który spełnia wymagania input sterująca wskazujące elementy typu, który może służyć do konstruowania value_type obiektów.

IList

Initializer_list z której mają być kopiowane elementy.

Wartość zwracana

Funkcje składowe pojedynczym — element — Wstaw [1] i [2], zwracają iterację do lokalizacji, w której nowego elementu wstawiono do zestawu wielokrotnego.

Funkcje elementu członkowskiego pojedynczego elementu z wskazówkę, [3] i [4], zwracać iterację wskazujące położenie, gdzie nowego elementu wstawiono do zestawu wielokrotnego.

Uwagi

Nie wskaźników lub odwołuje się do unieważnienie tej funkcji, ale może powodować, Iteratory wszystkich do kontenera.

Podczas wstawiania tylko jednego elementu jeśli wyjątek stanu kontenera nie jest modyfikowany.Podczas wstawiania wiele elementów jeśli wyjątek kontenera pozostanie nieokreślony, ale nieprawidłowy stan.

Value_type kontenera jest typedef, którego należy do kontenera, a dla zestawu, multiset<V>::value_type jest typem const V.

Funkcja elementu członkowskiego zakresu [5] wstawia sekwencję wartości elementów do zestaw wielokrotny umożliwiająca każdy element zlikwidowane poprzez iterację w zakresie [First, Last); w związku z tym Last nie uzyskać wstawiony.Funkcja elementu członkowskiego kontenera end() odwołuje się do pozycji po ostatnim elemencie w kontenerze — na przykład instrukcji s.insert(v.begin(), v.end()); wstawia wszystkie elementy v do s.

(6) jest używana funkcja inicjatora członka listy initializer_list skopiować elementy do zestawu wielokrotnego.

Do wstawienia elementu skonstruowane w miejscu, oznacza to, że są wykonywane żadnych operacji kopiowania i przenoszenia — zobacz multiset::emplace i multiset::emplace_hint.

Przykład

// multiset_insert.cpp
// compile with: /EHsc
#include <set>
#include <iostream>
#include <string>
#include <vector>

using namespace std;

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

    for (const auto& p : s) {
        cout << "(" << p << ") ";
    }

    cout << endl;
}

int main()
{

    // insert single values 
    multiset<int> s1;
    // call insert(const value_type&) version
    s1.insert({ 1, 10 });
    // call insert(ValTy&&) version 
    s1.insert(20);

    cout << "The original multiset values of s1 are:" << endl;
    print(s1);

    // intentionally attempt a duplicate, single element
    s1.insert(1);
    cout << "The modified multiset values of s1 are:" << endl;
    print(s1);
    cout << endl;

    // single element, with hint
    s1.insert(s1.end(), 30);
    cout << "The modified multiset values of s1 are:" << endl;
    print(s1);
    cout << endl;


    // The templatized version inserting a jumbled range
    multiset<int> s2;
    vector<int> v;
    v.push_back(43);
    v.push_back(294);
    v.push_back(41);
    v.push_back(330);
    v.push_back(42);
    v.push_back(45);

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

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

    cout << "The modified multiset values of s2 are:" << endl;
    print(s2);
    cout << endl;

    // The templatized versions move-constructing elements
    multiset<string>  s3;
    string str1("blue"), str2("green");

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

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

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

Dane wyjściowe

The original multiset values of s1 are:
3 elements: (1) (10) (20)
The modified multiset values of s1 are:
4 elements: (1) (1) (10) (20)

The modified multiset values of s1 are:
5 elements: (1) (1) (10) (20) (30)

Inserting the following vector data into s2:
6 elements: (43) (294) (41) (330) (42) (45)
The modified multiset values of s2 are:
6 elements: (41) (42) (43) (45) (294) (330)

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

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

Wymagania

Nagłówek: < wartość >

Przestrzeń nazw: std

Zobacz też

Informacje

<set>

multiset — Klasa

set::insert

Standardowa biblioteka szablonów