Udostępnij za pośrednictwem


map::insert

Wstawia element lub zakres elementów do mapy.

pair <iterator, bool> insert(
   const value_type& _Val
);
iterator insert(
   const_iterator _Where,
   const value_type& _Val
);
template<class InputIterator>
   void insert(
      InputIterator _First,
      InputIterator _Last
   );
template<class ValTy>
   pair<iterator, bool> insert(
      ValTy&& _Val
);
template<class ValTy>
   iterator insert(
      const_iterator _Where,
      ValTy&& _Val
);

Parametry

Parametr

Opis

_Val

Wartość elementu wstawiony mapy, chyba że mapa zawiera już tego elementu lub, bardziej ogólnie, element, którego klucz równoważnie porządkowania.

_Where

Wskazówki dotyczące miejsca, aby rozpocząć wyszukiwanie poprawne punkt wstawiania.

_First

Pozycja pierwszego elementu, które mają być kopiowane z mapy.

_Last

Pozycja tylko poza ostatni element do skopiowania z mapy.

Wartość zwracana

Pierwszy wstawić Członkowskie, funkcja zwraca parę, którego składnik bool zwraca wartość true, jeśli wstawiania i false, jeśli już mapa zawiera element, w której klucz miał równoważnej wartości w kolejności i którego składnik iteratora zwraca adres, gdy nowy element został wstawiony lub gdy element został już znajduje.

Składnik iteratora parę dostępu do pr zwracana przez tę funkcję Członkowskich, użyj pr. pierwszegooraz do odwołania do niego użyć * (pr.pierwszy).Dostęp bool składnik parę pr zwracana przez tę funkcję Członkowskich, użyj pr.second.

Drugi wstawić Członkowskich funkcji wersji Wskazówka zwraca iterację, wskazującą położenie, gdy nowy element został wstawiony mapy.

Funkcje składowe dwóch ostatnich, działają tak samo jako pierwsze dwa, z wyjątkiem _Val jest używana do skonstruowania wartości wstawione.

Uwagi

Value_type elementu jest para, tak aby wartość elementu pary, z pierwszego składnika równego wartości klucza i drugi element równy wartości danych elementu.

Wstawiania może wystąpić w czasie stała amortized wersji Wskazówka Wstaw nie logarytmiczna przy, jeśli punkt wstawiania następuje bezpośrednio _Where.

Trzecią funkcję Członkowskie wstawia sekwencja wartości elementu do mapy odpowiadające każdemu elementowi adresowane przez iterację z zakresu [_First, _Last) określonego zestawu.

Przykład

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

int main( ) {
   using namespace std;
   map <int, int>::iterator m1_pIter, m2_pIter;

   map <int, int> m1, m2;
   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.insert ( Int_Pair ( 4, 40 ) );

   cout << "The original key values of m1 =";
   for ( m1_pIter = m1.begin( ); m1_pIter != m1.end( ); m1_pIter++ )
      cout << " " << m1_pIter -> first;
   cout << "." << endl;

   cout << "The original mapped values of m1 =";
   for ( m1_pIter = m1.begin( ); m1_pIter != m1.end( ); m1_pIter++ )
      cout << " " << m1_pIter -> second;
   cout << "." << endl;

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

   if( pr.second == true ) {
      cout << "The element 10 was inserted in m1 successfully." << endl;
   }
   else {
      cout << "Key number 1 already exists in m1\n"
           << "with an associated value of ( (pr.first) -> second ) = " 
           << ( pr.first ) -> second 
           << "." << endl;
   }

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

   cout << "After the insertions, the key values of m1 =";
   for ( m1_pIter = m1.begin( ); m1_pIter != m1.end( ); m1_pIter++ )
      cout << " " << m1_pIter -> first;
   cout << "," << endl;

   cout << "and the mapped values of m1 =";
   for ( m1_pIter = m1.begin( ); m1_pIter != m1.end( ); m1_pIter++ )
      cout << " " << m1_pIter -> second;
   cout << "." << endl;

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

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

   cout << "After the insertions, the key values of m2 =";
   for ( m2_pIter = m2.begin( ); m2_pIter != m2.end( ); m2_pIter++ )
      cout << " " << m2_pIter -> first;
   cout << "," << endl;

   cout << "and the mapped values of m2 =";
   for ( m2_pIter = m2.begin( ); m2_pIter != m2.end( ); m2_pIter++ )
      cout << " " << m2_pIter -> second;
   cout << "." << endl;

    // The templatized versions move constructing elements
    map<int, string> m3, m4;
    pair<int, string> is1(1, "a"), is2(2, "b");

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

    m4.insert(c4.begin(),move(is2));
    cout << "After the move insertion, m4 contains:" << endl
      << " " << m4.begin()->first
      << " => " << m4.begin()->second
      << endl;
}

Dane wyjściowe

The original key values of m1 = 1 2 3 4.
The original mapped values of m1 = 10 20 30 40.
Key number 1 already exists in m1
with an associated value of ( (pr.first) -> second ) = 10.
After the insertions, the key values of m1 = 1 2 3 4 5,
and the mapped values of m1 = 10 20 30 40 50.
After the insertions, the key values of m2 = 2 3 4 10,
and the mapped values of m2 = 20 30 40 100.
After the move insertion, m3 contains:
 1 => a
After the move insertion, m4 contains:
 2 => b

Wymagania

Nagłówek: <map>

Obszar nazw: std

Zobacz też

Informacje

map Class

map::insert, map::find, i map::end

Standardowa biblioteka szablonu