#include #include #include #include void discard_negative(std::vector& tasks) { const auto end = std::remove_if(tasks.begin(), tasks.end(), [](int value) { return value < 0; }); tasks.erase(end, tasks.end()); } int main() { const std::vector original{3, -1, 0, -2, 3}; std::vector selected; std::copy_if(original.begin(), original.end(), std::back_inserter(selected), [](int value) { return value >= 0; }); const std::vector expected{3, 0, 3}; assert(selected == expected); auto modified = original; discard_negative(modified); assert(modified == expected && original[1] == -1); std::vector empty; discard_negative(empty); assert(empty.empty()); std::vector rejected{-1, -2}; discard_negative(rejected); assert(rejected.empty()); }