#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
int main()
{
std::vector<int> coll{ 0, 3, 0, 1, 0, 0, 2, 5, 0, 4 };
// Implement your solution here
auto condition = [](auto v){ return (v == 0); };
auto first = std::distance(std::begin(coll),
std::find_if_not(std::begin(coll), std::end(coll),
condition));
for (auto i = first + 1; i < coll.size(); ++i)
{
if (condition(coll[i]))
{
std::swap(coll[i], coll[first]);
++first;
}
}
std::copy(std::begin(coll), std::end(coll), std::ostream_iterator<int>(std::cout, " "));
}