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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::deque::erase - std::deque::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).

	  All iterators	and references are invalidated,	unless the erased ele-
       ments are at the
	  end or the beginning of the container, in which case only the	itera-
       tors and
	  references to	the erased elements are	invalidated.

	  It  is  unspecified  when  the past-the-end iterator is invalidated.
       (until C++11)
	  The past-the-end iterator is also invalidated	unless the erased
	  elements are at the beginning	of the container and the last  element
       is (since C++11)
	  not erased.

	  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

Type requirements
	  -
	  T must meet the requirements of MoveAssignable.

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
	  Does not throw unless	an exception is	thrown by the assignment oper-
       ator of T.

Complexity
	  Linear: the number of	calls to the destructor	of T is	 the  same  as
       the number of
	  elements erased, the number of calls to the assignment operator of T
       is no more than
	  the  lesser of the number of elements	before the erased elements and
       the number of
	  elements after the erased elements

Example
       // Run this code

	#include <deque>
	#include <iostream>

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

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

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

	    c.erase(c.begin()+2, c.begin()+5);
	    print_container(c);

	    // Erase all even numbers (C++11 and later)
	    for	(std::deque<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::deque::erase(3)

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

home | help