std::erase_if(std::set)(3)
π NAME π
okay so bestie, this is the page for std::erase_if(std::set) β from the C++ Standard Libary manual, with the (3) right there in the header (yes, βLibaryβ is literally how itβs spelled in the header, and we respect the lore π). The NAME line is also doing its little mirror thing: std::erase_if(std::set) - std::erase_if(std::set). Iconic. No notes.
π¦ Synopsis π¦
Defined in header <set> β and hereβs the exact signature, no cap:
template< class Key, class Compare, class Alloc,
class Pred >
std::set<Key, Compare, Alloc>::size_type (since C++20)
erase_if( std::set<Key, Compare, Alloc>& c,
Pred pred );
Translation: it erases all elements that satisfy the predicate pred from c. Slay.
Equivalent to:
auto old_size = c.size();
for (auto first = c.begin(), last = c.end(); first != last;)
{
if (pred(*first))
first = c.erase(first);
else
++first;
}
return old_size - c.size();
π Parameters π
cβ container from which to erase. (thatβs the whole description, bestie π )predβ predicate that returnstrueif the element should be erased. (yes,truemeans βyeet this oneβ β¨)
π Return value π
The number of erased elements. Thatβs it. Periodt.
β‘ Complexity β‘
Linear. Linear. Thatβs the whole vibe check. π
πΈ Example πΈ
// Run this code π
#include <iostream>
#include <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::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)
source/version check, bestie: this page is from cppreference.com, dated 2024.06.10, and itβs the std::erase_if(std::set)(3) page β bye, love you, hydrate and erase responsibly πβ¨π«Ά
π¦ 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