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

FreeBSD Manual Pages

  
 
  

home | help
std::unorde...imap::erase(3)  C++ Standard Libary std::unorde...imap::erase(3)

NAME
       std::unordered_multimap::erase -	std::unordered_multimap::erase

Synopsis
	  iterator  erase(  iterator  pos  );				(since
       C++11)
	  iterator  erase(  const_iterator  pos	 );			(since
       C++11)
	  iterator	      erase(	       const_iterator		first,
       (since C++11)
	  const_iterator last );			   (1)
	  size_type  erase(  const  Key&  key  );		     (2)   (3)
       (since C++11)
	  template<   class   K	  >					   (4)
       (since C++23)
	  size_type erase( K&& x );

	  Removes specified elements from the container.

	  1) Removes the element at pos.
	  2) Removes the elements in the range [first; last), which must be  a
       valid range in
	  *this.
	  3) Removes all elements with the key equivalent to key.
	  4)  Removes  all  elements  with key that compares equivalent	to the
       value x.	This
	  overload participates	in overload resolution only if Hash::is_trans-
       parent and
	  KeyEqual::is_transparent are valid and each denotes a	type, and nei-
       ther iterator nor
	  const_iterator is implicitly convertible from	K. This	 assumes  that
       such Hash is
	  callable  with  both K and Key type, and that	the KeyEqual is	trans-
       parent, which,
	  together, allows calling this	function without constructing  an  in-
       stance of Key.

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

	  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 order of the elements that are not erased	 is  preserved.	 (This
       makes it	possible
	  to erase individual elements while iterating through the container.)

Parameters
	  pos	      -	iterator to the	element	to remove
	  first, last -	range of elements to remove
	  key	      -	key value of the elements to remove
	  x	      -	a value	of any type that can be	transparently compared
       with a key
			denoting the elements to remove

Return value
	  1-2) Iterator	following the last removed element.
	  3,4) Number of elements removed.

Exceptions
	  1,2) Throws nothing.
	  3,4) Any exceptions thrown by	the Hash and KeyEqual object.

Complexity
	  Given	an instance c of unordered_multimap:

	  1) Average case: constant, worst case: c.size()
	  2) Average case: std::distance(first,	last), worst case: c.size()
	  3) Average case: c.count(key), worst case: c.size()
	  4) Average case: c.count(x), worst case: c.size()

Notes
	  Feature-test macro: __cpp_lib_associative_heterogeneous_erasure (for
       overload	(4))

Example
       // Run this code

	#include <unordered_map>
	#include <iostream>
	int main()
	{
	    std::unordered_multimap<int, std::string> c	= {
		{1, "one" }, {2, "two" }, {3, "three"},
		{4, "four"}, {5, "five"}, {6, "six"  }
	    };

	    // erase all odd numbers from c
	    for(auto it	= c.begin(); it	!= c.end(); ) {
		if(it->first % 2 != 0)
		    it = c.erase(it);
		else
		    ++it;
	    }

	    for(auto& p	: c) {
		std::cout << p.second << ' ';
	    }
	}

Possible output:
	two four six

	 Defect	reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	     DR	       Applied	   to		   Behavior    as    published
       Correct behavior
	  LWG 2059 C++11      overload for one const_iterator introduced over-
       load for	iterator
			      new ambiguity				 added
	  LWG 2356 C++11      the order	of element that	are not	 erased	   re-
       quired to be
			      was  unspecified				  pre-
       served

See also
	  clear	  clears the contents
	  (C++11) (public member function)

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

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

home | help