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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::multimap::erase - std::multimap::erase

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

	  Removes  specified elements from the container. The order of the re-
       maining equivalent
	  elements is preserved.

	  1,2) Removes the element at pos.
	  3) Removes the elements in the range [first, last), which must be  a
       valid range in
	  *this.
	  4) Removes all elements with the key equivalent to key.
	  5)  Removes  all  elements  with key that compares equivalent	to the
       value x.	This
	  overload participates	in overload resolution only if the  qualified-
       id
	  Compare::is_transparent is valid and denotes a type, and neither it-
       erator nor
	  const_iterator  is  implicitly convertible from K. It	allows calling
       this function
	  without constructing an instance of Key.

	  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.

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-3) Iterator	following the last removed element.
	  4) Number of elements	removed.
	  5) Number of elements	removed.

Exceptions
	  1-3) Throws nothing.
	  4,5) Any exceptions thrown by	the Compare object.

Complexity
	  Given	an instance c of multimap:

	  1,2) Amortized constant
	  3) log(c.size()) + std::distance(first, last)
	  4) log(c.size()) + c.count(key)
	  5) log(c.size()) + c.count(x)

Notes
		      Feature-test     macro		       Value	   Std
       Feature
								      Hetero-
       geneous erasure in
								      associa-
       tive containers
	  __cpp_lib_associative_heterogeneous_erasure 202110L (C++23) and  un-
       ordered
								      associa-
       tive containers;
								      overload
       (5)

Example
       // Run this code

	#include <map>
	#include <iostream>

	int main()
	{
	    std::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 << ' ';
	    std::cout << '\n';
	}

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		  Cor-
       rect behavior
			      the return type of overloads (1) and (3)
	  LWG  130   C++98	 was void (it is not			  cor-
       rected to iterator
			      consistent with the erase() requirement
			      on sequence containers)
			      the order	of equivalent elements that
	  LWG 371   C++98	are  not				   re-
       quired to be
			      erased  was  not	guaranteed to be	  pre-
       served
			      preserved
	  LWG 2059 C++11      replacing	overload (1) with overload  (2)	 added
       overload	(1) back
			      introduced new ambiguity

See also
	  clear	clears the contents
		(public	member function)

http://cppreference.com		  2024.06.10	       std::multimap::erase(3)

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

home | help