std::set::erase(3)
π NAME π
std::set::erase β literally std::set::erase, bestie. Welcome to std::set::erase(3) from the C++ Standard Libary manual. Yes, that manual name is spelled exactly like that, and we are obsessed. π
β¨ SYNOPSIS β¨
okay so hereβs the overload lineup, no cap:
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)
Removes specified elements from the container. Periodt. π
1,2)Removes the element atpos. Only one overload is provided ifiteratorandconst_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 the element (if one exists) 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.
π«Ά heads up, bestie: references and iterators to the erased elements are invalidated. Other references and iterators are not affected.
π also: the iteratorposmust be valid and dereferenceable. Thus theend()iterator (which is valid, but is not dereferenceable) cannot be used as a value forpos.
π 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 (0or1).5)Number of elements removed.
π EXCEPTIONS π
1-3)Throws nothing.4,5)Any exceptions thrown by theCompareobject.
π₯ COMPLEXITY π₯
Given an instance c of set:
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 tea, served fresh β:
- 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 π¦
This little demo is giving main character energy, fr fr:
// Run this code
#include <set>
#include <iostream>
int main()
{
std::set<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 to:C++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 2059β Applied to:C++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).
source/version: http://cppreference.com Β· date: 2024.06.10 Β· page: std::set::erase(3) β mwah, bestie πβ¨
π¦ 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