将矢量部分分配给另一个

Rob*_*nig 2 c++ stl vector

std::fill( ForwardIt first, ForwardIt last, const T& value )允许我用常量值填充向量的一部分.

std::assign( InputIt first, InputIt last )让我完全取代向量与另一个向量的一部分.

在STL中是否有一个结合了这两个函数(smt like part_assign(begin, end, begin, end))的函数,它允许我用另一个向量填充向量的间隔?

如果没有,那么最有效的方法是什么?

Ker*_* SB 8

是的,它被称为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.

  • _"就我所见,`copy`在向量中插入元素."_不,它没有.它为从0到`std :: distance(src_begin,src_end)`的每个`i`执行赋值`*(dst_begin + i)=*(src_begin + i)`.这不会在向量中插入任何新元素_unless_`dst_begin`是向量中的`back_insert_iterator`.它只是为现有元素分配新值. (2认同)