Logo

Programming-Idioms

This language bar is your friend. Select your favorite languages!

Idiom #247 Filter list in-place

Remove all the elements from list x that don't satisfy the predicate p, without allocating a new list.
Keep all the elements that do satisfy p.

For languages that don't have mutable lists, refer to idiom #57 instead.

#include <functional>
std::erase_if(x, std::not_fn(p));

C++20

Compatible with most STL containers (Exceptions: x cannot be an std::array, std::stack, or std::queue)

std::erase_if also returns the number of elements removed

New implementation...