std::fill( ForwardIt first, ForwardIt last, const T& value )允许我用常量值填充向量的一部分.
std::assign( InputIt first, InputIt last )让我完全取代向量与另一个向量的一部分.
在STL中是否有一个结合了这两个函数(smt like part_assign(begin, end, begin, end))的函数,它允许我用另一个向量填充向量的间隔?
如果没有,那么最有效的方法是什么?
是的,它被称为std::copy:
std::copy(src_begin, src_end, dst_begin);
Run Code Online (Sandbox Code Playgroud)
它将std::distance(src_begin, src_end)元素(从源向量)复制到从dst_begin(在目标向量中)开始的元素.正如fill,如果要变异接收容器的目标迭代器可能是一个插件.
有几种变化,例如
std::copy_n(src_begin, n, dst_begin);
Run Code Online (Sandbox Code Playgroud)
复制n元素.还有std::move移动元素而不是复制它们,或者你可以使用移动迭代器copy.