std::multiset::erase(3)
π¦ std::multiset::erase(3) β C++ Standard Libary
okay bestie, welcome to the std::multiset::erase(3) page from the C++ Standard Libary manual. This is the multiset erase glow-up where you yeet elements out, and yes there are multiple overloads because C++ loves a little drama π
β¨
β¨ NAME β¨
std::multiset::erase β std::multiset::erase (literally the same name twice, iconic π)
πΈ Synopsis πΈ
iterator erase( iterator pos ); (until C++23)
iterator erase( iterator pos )
requires(!std::same_as<iterator, const_iterator>); (since C++23)
iterator erase( const_iterator pos ); (2) (since C++11)
iterator erase( iterator first, iterator last ); (1) (until C++11)
iterator erase( const_iterator first, const_iterator last ); (3) (since C++11)
size_type erase( const Key& key ); (4)
template< class K >
size_type erase( K&& x ); (5) (since C++23)
π Description π
Removes specified elements from the container. The order of the remaining equivalent elements is preserved. no cap π«Ά
1,2)Removes the element atpos.- Only one overload is provided if
iteratorandconst_iteratorare the same type. (since C++11) 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 tokey.5)Removes all elements with key that compares equivalent to the valuex. This overload participates in overload resolution only if the qualified-idCompare::is_transparentis valid and denotes a type, and neitheriteratornorconst_iteratoris implicitly convertible fromK. It allows calling this function without constructing an instance ofKey.
References and iterators to the erased elements are invalidated. Other references and iterators are not affected. π¨
The iteratorposmust be valid and dereferenceable. Thus theend()iterator (which is valid, but is not dereferenceable) cannot be used as a value forpos. bestie that is not a suggestion, that is the rule π
π Parameters π
posβ iterator to the element to removefirst,lastβ range of elements to removekeyβ key value of the elements to removexβ 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 theCompareobject.
β Complexity β
Given an instance c of multiset:
1,2)Amortized constant3)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 vibes, iykyk:
- Feature-test macro:
__cpp_lib_associative_heterogeneous_erasure - Value:
202110L - Std:
(C++23) - Feature: Heterogeneous erasure in associative containers and unordered associative containers; overload
(5)
π Example π
// Run this code
#include <set>
#include <iostream>
int main()
{
std::multiset<int> c = {1, 2, 3, 4, 1, 2, 3, 4};
auto print = [&c]
{
std::cout << "c = { ";
for (int n : c)
std::cout << n << ' ';
std::cout << "}\n";
};
print();
std::cout << "Erase all odd numbers:\n";
for (auto it = c.begin(); it != c.end();)
{
if (*it % 2 != 0)
it = c.erase(it);
else
++it;
}
print();
std::cout << "Erase 1, erased count: " << c.erase(1) << '\n';
std::cout << "Erase 2, erased count: " << c.erase(2) << '\n';
std::cout << "Erase 2, erased count: " << c.erase(2) << '\n';
print();
}
π§ Defect reports π§
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
LWG 130, applied toC++98β behavior as published: the return type of overloads(1)and(3)wasvoid(it is not consistent with theerase()requirement on sequence containers); correct behavior: corrected toiterator.LWG 371, applied toC++98β behavior as published: the order of equivalent elements that are not erased was not guaranteed to be preserved; correct behavior: required to be preserved.LWG 2059, applied toC++11β behavior as published: replacing overload(1)with overload(2)introduced new ambiguity; correct behavior: added overload(1)back.
π See also π
clearβ clears the contents (public member function)
This pageβs footer vibes: source http://cppreference.com, version/date 2024.06.10, page std::multiset::erase(3). bye bestie, go erase something iconic π«Άπ
β¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms