list::insert

iterator insert(iterator it, const T& x = T());
void insert(iterator it, size_type n, const T& x);
void insert(iterator it, const_iterator first, const_iterator last);

Each of the member functions inserts, before the element pointed to by it in the controlled sequence, a sequence specified by the remaining operands. The first member function inserts a single element with value x and returns an iterator that points to the newly inserted element. The second member function inserts a repetition of n elements of value x. The last member function inserts the sequence [first, last).

In this implementation, if a translator does not support member template functions, the template:

template<class InIt>
    void insert(iterator it, InIt first, InIt last);

is replaced by:

void insert(iterator it, const_iterator first, const_iterator last);
void insert(iterator it, const T *first, const T *last);

Inserting N elements causes N copies. No reallocation occurs, so no iterators or references become invalid.

See the related sample program.