std::erase_...::flat_set)(3)
π std::erase_...::flat_set)(3) π
okay bestie, this page is straight out of the C++ Standard Libary manual (yes, that's literally how it's spelled there), and it's about std::erase_if(std::flat_set). it's giving very specific, very useful, very C++23 energy. let's get into it β¨
π NAME π
std::erase_if(std::flat_set) β std::erase_if(std::flat_set)
β¨ Synopsis β¨
Defined in header <flat_set>
template< class Key, class Compare, class KeyContainer,
class Pred >
std::flat_set<Key, Compare, KeyContainer>::size_type (since
C++23)
erase_if( std::flat_set<Key, Compare, KeyContainer>& c,
Pred pred );
Erases all elements that satisfy the predicate pred from c.
The predicate pred is satisfied if the expression bool(pred(std::as_const(e))) is true, where e is some element in c.
π¨ real talk:Keymust beMoveAssignable. Otherwise, the behavior is undefined. no cap, that part matters.
π Parameters π
cβ container adaptor from which to erasepredβ predicate that returnstrueif the element should be erased
π«Ά Return value π«Ά
The number of erased elements. that's it, that's the tea π
π₯ Complexity π₯
Exactly c.size() applications of the predicate pred.
π Exceptions π
If erase_if throws, c remains in valid but unspecified (maybe empty) state. periodt.
πΈ Notes πΈ
The algorithm is stable, that is, the order of elements that are not deleted remains unchanged. slay for predictable vibes β¨
π Example π
// Run this code
#include <iostream>
#include <flat_set>
void println(auto rem, auto const& container)
{
std::cout << rem << '{';
for (char sep[]{0, ' ', 0}; const auto& item : container)
std::cout << sep << item, *sep = ',';
std::cout << "}\n";
}
int main()
{
std::flat_set data{3, 3, 4, 5, 5, 6, 6, 7, 2, 1, 0};
println("Original:\n", data);
auto divisible_by_3 = [](auto const& x) { return (x % 3) == 0; };
const auto count = std::erase_if(data, divisible_by_3);
println("Erase all items divisible by 3:\n", data);
std::cout << count << " items erased.\n";
}
Output:
Original:
{0, 1, 2, 3, 4, 5, 6, 7}
Erase all items divisible by 3:
{1, 2, 4, 5, 7}
3 items erased.
π See also π
removeβ removes elements satisfying specific criteriaremove_ifβ(function template)
okay bye bestie π
source: http://cppreference.com; version/date: 2024.06.10; manual page: std::erase_...::flat_set)(3) π«Άβ¨
π¦ 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