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