# std::list::insert

From cppreference.com
< cpp‎ | container‎ | list

| (1) |
iterator insert( iterator pos, const T& value ); |  | (until C++11)
iterator insert( const_iterator pos, const T& value ); |  | (since C++11)
iterator insert( const_iterator pos, T&& value ); | (2) | (since C++11)
| (3) |
void insert( iterator pos, size_type count, const T& value ); |  | (until C++11)
iterator insert( const_iterator pos, size_type count, const T& value ); |  | (since C++11)
| (4) |
template< class InputIt > void insert( iterator pos, InputIt first, InputIt last); |  | (until C++11)
template< class InputIt > iterator insert( const_iterator pos, InputIt first, InputIt last ); |  | (since C++11)
iterator insert( const_iterator pos, std::initializer_list<T> ilist ); | (5) | (since C++11)

Inserts elements at the specified location in the container.

1-2) inserts `value` before `pos`
3) inserts `count` copies of the `value` before `pos`
4) inserts elements from range `[first, last)` before `pos`.

This overload has the same effect as overload (3) if `InputIt` is an integral type. | (until C++11)
This overload only participates in overload resolution if `InputIt` qualifies as `InputIterator`, to avoid ambiguity with the overload (3). | (since C++11)

The behavior is undefined if `first` and `last` are iterators into *this.
5) inserts elements from initializer list `ilist` before `pos`.

No iterators or references are invalidated.

### Parameters

pos | - | iterator before which the content will be inserted. `pos` may be the end() iterator
value | - | element value to insert
first, last | - | the range of elements to insert, can't 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).

### Return value

1-2) Iterator pointing to the inserted `value`
3) Iterator pointing to the first element inserted, or `pos` if count==0.
4) Iterator pointing to the first element inserted, or `pos` if first==last.
5) Iterator pointing to the first element inserted, or `pos` if `ilist` is empty.

### Complexity

1-2) Constant.
3) Linear in count
4) Linear in std::distance(first, last)
5) Linear in ilist.size()

### Exceptions

If an exception is thrown, there are no effects (strong exception guarantee).

### See also

emplace (C++11) | constructs element in-place (public member function)
push_front | inserts an element to the beginning (public member function)
push_back | adds an element to the end (public member function)

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/container/list/insert&oldid=50528"