multiset::insert
Vloží do multimnožina elementu nebo rozsahu prvků.
// (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 |
Popis |
Val |
Hodnota elementu, který má být vložena do multimnožina. |
Where |
Místo zahájení vyhledání správného bodu vložení.(Pokud tohoto bodu bezprostředně předchází Where, vložení může dojít v amortizovaný konstantní čas místo logaritmické času.) |
ValTy |
Parametr šablony, který určuje typ argumentu, který multimnožina lze použít při sestavování element value_typea předávat dokonalé Val jako argument. |
First |
Pozice prvního prvku, který chcete zkopírovat. |
Last |
Pozice bezprostředně za posledním prvkem, který chcete zkopírovat. |
InputIterator |
Argument funkce šablony, který splňuje požadavky vstupního iterátoru, který odkazuje na prvky typu, který lze použít k vytvoření objektů value_type. |
IList |
Seznam initializer_list, ze kterého chcete kopírovat prvky. |
Vrácená hodnota
Jeden element vložení funkce členů (1) a (2) zpět na pozici vložena nového elementu do multimnožina iterace.
Jeden element s nápovědu členské funkce, (3) a (4) vrátí odkazující na pozici vložena nového elementu do multimnožina iterace.
Poznámky
Tato funkce budou neplatné žádné ukazatele nebo odkazy, ale může ke zrušení platnosti všech iterátory do kontejneru.
Při vložení pouze jeden prvek Pokud je vyvolána výjimka, stav kontejneru se nemění.Pokud je při vkládání více prvků vyvolána výjimka, kontejner zůstane v neurčeném, ale platném stavu.
Value_type kontejneru je definice typu, který patří do kontejneru a pro sadu, multiset<V>::value_type je typ const V.
Členskou funkci rozsahu: [5] vloží posloupnost hodnoty elementů do multimnožina, která odpovídá každý prvek řešit iterace v rozsahu [First, Last); Proto Last získat není vložena.Funkce člena kontejneru end() odkazuje na pozici bezprostředně za posledním prvkem v kontejneru – například příkaz s.insert(v.begin(), v.end()); vloží všechny elementy v do s.
Člen inicializátoru seznamu funkce (6) používá initializer_list ke zkopírování elementů do multimnožina.
Další informace o vložení prvku vytvořeného na místě – to znamená, že nejsou provedeny žádné operace kopírování nebo přesunutí – naleznete v tématech multiset::emplace a multiset::emplace_hint.
Příklad
// 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;
}
Výstup
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)
Požadavky
Záhlaví: < nastavit >
Obor názvů: std