public member function
<set>
std::set::insert single element (1)pair<iterator,bool> insert (const value_type& val);with hint (2)
iterator insert (iterator position, const value_type& val);range (3)
template <class InputIterator> void insert (InputIterator first, InputIterator last);single element (1)
pair<iterator,bool> insert (const value_type& val);pair<iterator,bool> insert (value_type&& val);with hint (2)
iterator insert (const_iterator position, const value_type& val);iterator insert (const_iterator position, value_type&& val);range (3)
template <class InputIterator> void insert (InputIterator first, InputIterator last);initializer list (4)
void insert (initializer_list<value_type> il);
Insert element
Extends the container by inserting new elements, effectively increasing the container size by the number of elements inserted.Because elements in a set are unique, the insertion operation checks whether each inserted element is equivalent to an element already in the container, and if so, the element is not inserted, returning an iterator to this existing element (if the function returns a value).
For a similar container allowing for duplicate elements, see multiset.
Internally, set containers keep all their elements sorted following the criterion specified by its comparison object. The elements are always inserted in its respective position following this ordering.
The parameters determine how many elements are inserted and to which values they are initialized:
The function optimizes its insertion time if position points to the element that will precede the inserted element.
The function optimizes its insertion time if
positionpoints to the element that will
followthe inserted element (or to the
end, if it would be the last).
The versions with a hint (2) return an iterator pointing to either the newly inserted element or to the element that already had its same value in the set.
Member type iterator is a bidirectional iterator type that points to elements.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// set::insert (C++98)
#include <iostream>
#include <set>
int main ()
{
std::set<int> myset;
std::set<int>::iterator it;
std::pair<std::set<int>::iterator,bool> ret;
// set some initial values:
for (int i=1; i<=5; ++i) myset.insert(i*10); // set: 10 20 30 40 50
ret = myset.insert(20); // no new element inserted
if (ret.second==false) it=ret.first; // "it" now points to element 20
myset.insert (it,25); // max efficiency inserting
myset.insert (it,24); // max efficiency inserting
myset.insert (it,26); // no max efficiency inserting
int myints[]= {5,10,15}; // 10 already in set, not inserted
myset.insert (myints,myints+3);
std::cout << "myset contains:";
for (it=myset.begin(); it!=myset.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
Output:
myset contains: 5 10 15 20 24 25 26 30 40 50
If N elements are inserted,
Nlog(size+N)in general, but linear in
size+Nif the elements are already sorted according to the same ordering criterion used by the container.
If N elements are inserted,
Nlog(size+N).
Implementations may optimize if the range is already sorted.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4