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 <list> #include <functional>
std::list<Foo> x; x.remove_if(std::not_fn(p));
#include <functional>
std::erase_if(x, std::not_fn(p));
j := 0 for i, v := range x { if p(v) { x[j] = x[i] j++ } } x = x[:j]
for i, v := range x { if p(v) { x[j] = x[i] j++ } } for k := j; k < len(x); k++ { x[k] = nil } x = x[:j]
for (const [key, value] of x.entries()) { if (!p(value)) x.splice(key, 1); }
classes
for i := x.count-1 downto 0 do if not p(x.items[i]) then x.delete(i);
x.select!(&:p)
let mut j = 0; for i in 0..x.len() { if p(x[i]) { x[j] = x[i]; j += 1; } } x.truncate(j);
No security, no password. Other people might choose the same nickname.