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