Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::list::erase(3)	      C++ Standard Libary	   std::list::erase(3)

NAME
       std::list::erase	- std::list::erase

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

	  Erases the 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.

	  The iterator pos must	be valid and dereferenceable. Thus  the	 end()
       iterator	(which
	  is  valid, but is not	dereferenceable) cannot	be used	as a value for
       pos.

	  The  iterator	 first	does  not  need	 to  be	  dereferenceable   if
       first==last: erasing an
	  empty	range is a no-op.

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

Return value
	  Iterator following the last removed element.

	  If  pos  refers  to the last element,	then the end() iterator	is re-
       turned.

	  If last==end() prior to removal, then	the updated end() iterator  is
       returned.

	  If [first, last) is an empty range, then last	is returned.

Exceptions
	  (none)

Complexity
	  1) Constant.
	  2) Linear in the distance between first and last.

Example
       // Run this code

	#include <list>
	#include <iostream>
	#include <iterator>

	void print_container(const std::list<int>& c)
	{
	    for	(int i : c) {
		std::cout << i << " ";
	    }
	    std::cout << '\n';
	}

	int main( )
	{
	    std::list<int> c{0,	1, 2, 3, 4, 5, 6, 7, 8,	9};
	    print_container(c);

	    c.erase(c.begin());
	    print_container(c);

	    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);
	    print_container(c);

	    // Erase all even numbers (C++11 and later)
	    for	(std::list<int>::iterator it = c.begin(); it !=	c.end(); ) {
		if (*it	% 2 == 0) {
		    it = c.erase(it);
		} else {
		    ++it;
		}
	    }
	    print_container(c);
	}

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
	1 7 9

See also
	  clear	clears the contents
		(public	member function)

http://cppreference.com		  2022.07.31		   std::list::erase(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::list::erase&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help