Inserts elements at the specified location in the container.
value
before pos
.count
copies of the value
before pos
.[first, last)
before pos
. This overload has the same effect as overload (3) if | (until C++11) |
This overload participates in overload resolution only if | (since C++11) |
first
and last
are iterators into *this
. ilist
before pos
.No iterators or references are invalidated.
pos | - | iterator before which the content will be inserted (pos may be the end() iterator) |
value | - | element value to insert |
count | - | number of elements to insert |
first, last | - | the range of elements to insert, cannot be iterators into container for which insert is called |
ilist | - | initializer list to insert the values from |
Type requirements | ||
-T must meet the requirements of CopyInsertable in order to use overload (1). |
||
-T must meet the requirements of MoveInsertable in order to use overload (2). |
||
-T must meet the requirements of CopyAssignable and CopyInsertable in order to use overload (3). |
||
-T must meet the requirements of EmplaceConstructible in order to use overload (4,5). |
value
.pos
if count == 0
.pos
if first == last
.pos
if ilist
is empty.count
std::distance(first, last)
ilist.size()
If an exception is thrown, this function has no effect (strong exception guarantee).
#include <iostream> #include <iterator> #include <list> void print(int id, const std::list<int>& container) { std::cout << id << ". "; for (const int x: container) std::cout << x << ' '; std::cout << '\n'; } int main () { std::list<int> c1(3, 100); print(1, c1); auto it = c1.begin(); it = c1.insert(it, 200); print(2, c1); c1.insert(it, 2, 300); print(3, c1); // reset `it` to the begin: it = c1.begin(); std::list<int> c2(2, 400); c1.insert(std::next(it, 2), c2.begin(), c2.end()); print(4, c1); int arr[] = {501, 502, 503}; c1.insert(c1.begin(), arr, arr + std::size(arr)); print(5, c1); c1.insert(c1.end(), {601, 602, 603}); print(6, c1); }
Output:
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 149 | C++98 | overloads (3) and (4) returned nothing | returns an iterator |
(C++11) | constructs element in-place (public member function) |
inserts an element to the beginning (public member function) |
|
adds an element to the end (public member function) |
|
creates a std::insert_iterator of type inferred from the argument (function template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/container/list/insert