#pragma once #include #include namespace ztu { template void replace_range( std::vector& dst, typename std::vector::iterator dst_begin, typename std::vector::iterator dst_end, InputIt src_begin, InputIt src_end ) { const auto dst_size = std::distance(dst_begin, dst_end); const auto src_size = std::distance(src_begin, src_end); if (dst_size < src_size) { dst.insert(dst_end, src_begin + dst_size, src_end); } else if (dst_size > src_size) { dst.erase(dst_begin + src_size, dst_end); } std::copy_n(src_begin, std::min(src_size, dst_size), dst_begin); } }