#include #include template std::vector duplicate_zeros(std::vector &vec) { std::vector ret{}; for(const auto& e : vec) { if(ret.size() == vec.size()) break; if(e == 0) { ret.emplace_back(0); ret.emplace_back(0); } else ret.emplace_back(e); } return ret; } template std::ostream &operator<<(std::ostream &os, const std::vector& vec) { for(const auto &e : vec) os << e << ' '; os << "\n"; return os; } int main() { std::vector vec1{1,0,2,3,0,4,5,0},vec2{1,2,3},vec3{0,3,0,4,5}; std::cout << duplicate_zeros(vec1); std::cout << duplicate_zeros(vec2); std::cout << duplicate_zeros(vec3); return 0; }