std::list::erase

From cppreference.com

iterator erase( iterator pos );
iterator erase( const_iterator pos );
(1) (until C++11)
(since C++11)
iterator erase( iterator first, iterator last );
iterator erase( const_iterator first, const_iterator last );
(2) (until C++11)
(since C++11)

Removes specified elements from the container.

1) Removes the element at pos.

2) Removes the elements in the range [first; last).

References and iterators to the erased elements are invalidated. Other references and iterators are not affected.

Contents

[edit] Parameters

pos - iterator to the element to remove
first, last - range of elements to remove

[edit] Return value

iterator following the last removed element.

[edit] Notes

All iterators must be valid and dereferenceable, that is, the end() iterator (which is valid, but is not dereferencable) cannot be used.

[edit] Example

#include <list>
#include <iostream>
#include <iterator>
 
int main( )
{
    std::list<int> c{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    for (auto &i : c) {
        std::cout << i << " ";
    }
    std::cout << '\n';
 
    c.erase(c.begin());
 
    for (auto &i : c) {
        std::cout << i << " ";
    }
    std::cout << '\n';
 
    std::list<int>::iterator range_begin = c.begin();
    std::list<int>::iterator range_end = c.begin();
    std::advance(range_begin,2);
    std::advance(range_end,5);
 
    c.erase(range_begin, range_end);
 
    for (auto &i : c) {
        std::cout << i << " ";
    }
    std::cout << '\n';
}

Output:

0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 6 7 8 9

[edit] Complexity

1) Constant.

2) linear in the distance between first and last.

[edit] See also

clears the contents
(public member function)