Sdílet prostřednictvím


map::insert

Vloží prvek nebo prvky oblast 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

Description

_Val

Hodnota elementu, má být vložena do mapy, pokud již obsahuje mapu prvku nebo obecněji, jehož klíč je equivalently objednané prvek.

_Where

Nápovědu týkající se zahájeno hledání správné bod vložení na místo.

_First

Pozice první prvek zkopírovat z mapy.

_Last

Pozice za poslední prvek zkopírovat z mapy.

Vrácená hodnota

První Vložit členské funkce vrátí pár jehož komponenty bool vrátí hodnotu true, pokud kurzor a false, pokud již mapy obsažené prvek, jehož klíč bylo odpovídající hodnoty v pořadí a jejichž součásti iterace vrátí adresu, kde byl vložen nový prvek nebo kde prvek byl již nachází.

Přístup k součásti iterace páru pr vrácené funkcí tohoto člena, použijte pr. prvnía proto zrušit reference struktury ji, použijte * (pr.první).Přístup bool součást páru pr vrácené funkcí tohoto člena, použijte pr.second.

Druhý Vložit členské funkce verze nápovědy vrátí iterátoru, která odkazuje na umístění, kde byl vložen nový prvek do mapy.

Funkce posledních dvou členů se chovají stejně jako první dva kromě _Val se používá pro sestavení vložené hodnoty.

Poznámky

Value_type prvku je dvojice, aby hodnota prvku bude objednané dvojice s první částky rovnající se hodnota klíče a druhé částky rovnající se data hodnotu prvku.

Vložení může dojít v amortized konstantní čas pro verzi nápovědy vložit místo logaritmické času, pokud bod vložení následuje _Where.

Třetí členské funkce vloží posloupnost hodnot prvků do mapy odpovídající každému prvku adresovány iterace v rozsahu [_First, _Last) zadanou sadu.

Příklad

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

Výsledek

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

Požadavky

Záhlaví: <map>

Obor názvů: std

Viz také

Referenční dokumentace

map Class

map::insert, map::find, a map::end

Standardní šablona knihovny