(C++17) | ||||
Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
Associative | ||||
Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
Views | ||||
(C++20) | ||||
(C++23) | ||||
Tables | ||||
Iterator invalidation | ||||
Member function table | ||||
Non-member function table |
iterator erase( iterator pos); | (1) | (since C++23) (constexpr since C++26) |
iterator erase( const_iterator pos); | (2) | (since C++23) (constexpr since C++26) |
iterator erase( const_iterator first, const_iterator last); | (3) | (since C++23) (constexpr since C++26) |
size_type erase(const Key& key); | (4) | (since C++23) (constexpr since C++26) |
template<class K> size_type erase( K&& x); | (5) | (since C++23) (constexpr since C++26) |
Removes specified elements from the container.
[
first,
last)
, which must be a valid range in*this.Compare
istransparent, and neitheriterator
norconst_iterator
is implicitly convertible fromK
. It allows calling this function without constructing an instance ofKey
.Information on iterator invalidation is copied fromhere |
The iteratorpos must be dereferenceable. Thus theend() iterator (which is valid, but is not dereferenceable) cannot be used as a value forpos.
Contents |
pos | - | iterator to the element to remove |
first, last | - | the pair of iterators defining therange 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 |
Compare
object.This section is incomplete Reason: revision required |
#include <flat_set>#include <iostream> int main(){std::flat_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();}
Output:
c = { 1 2 3 4 }Erase all odd numbers:c = { 2 4 }Erase 1, erased count: 0Erase 2, erased count: 1Erase 2, erased count: 0c = { 4 }
clears the contents (public member function)[edit] |