See the example from cplusplus.com for std::copy_if
:
std::vector<int> foo = {25,15,5,-5,-15};
std::vector<int> bar;
// copy only positive numbers:
std::copy_if (foo.begin(), foo.end(), std::back_inserter(bar), [](int i){return i>=0;} );
std::copy_if
evaluates the lambda expression for every element in foo
here and if it returns true
it copies the value to bar
.
The std::back_inserter
allows us to actually insert new elements at the end of bar
(using push_back()
) with an iterator without having to resize it to the required size first.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…