我有一定的大小的std::vector
,并且需要分配(尺寸34)另一矢量的内容是到位置34 ... 67.原始矢量的大小不应该改变。综观矢量的API我需要更换一个范围内的元素在载体
assign()不起作用,因为它取代所有元素。
swap()不起作用,因为它取代所有元素。
emplace()不起作用,因为它创造了一个新的元素。
reserve(),然后循环at()会工作,但它会很好,以避免循环。 memcpy(target.data [34],source.data(),34 * sizeof(T))将在没有循环的情况下工作,但看起来像C hack。
std::copy会很好地工作,但隐藏循环我希望它比memcpy()慢。
元素是整数。当改变矢量中的一系列元素时,哪个应该是默认方法?
'std :: copy'是正确的方法。我敢打赌,无论您需要什么,它都可以非常快速地完成。 :) – 2014-09-11 10:29:39
'std :: copy'确实是正确的方法。对于类似POD类型的容器和*尤其是对于像你的积分这样的本地标量的容器,如果它专门用于基本的'memcpy'内在的话,我不会感到震惊。 *尝试一下*。 – WhozCraig 2014-09-11 10:32:25
出于好奇,你为什么期望它很慢? – 2014-09-11 10:36:17