使用数组时,你必须使用
memcpy(void *destination, const void *source, size_t num);
但是向量简单的复制方法提供迭代器的能力,使memcpy的无用。将矢量内容复制到另一个位置的最快方法是什么?
使用数组时,你必须使用
memcpy(void *destination, const void *source, size_t num);
但是向量简单的复制方法提供迭代器的能力,使memcpy的无用。将矢量内容复制到另一个位置的最快方法是什么?
您可以使用memcpy用向量 - 向量保证是连续在内存中,以便提供的矢量不为空,则可以使用&vData[0]
(其中vData
是您的载体)作为源指针memcpy
编辑正如其他答案的评论所述,这只适用于向量的value_type是可复制的。
-1出于与niosi的回答下由ildjarn提及的相同原因。 –
@lidjarn OK够公平 - 我不知道,我相信肯定还有其他人不会这么做,所以我不会删除这个答案。 – mathematician1975
您必须在自己的环境中使用您的程序来测量自己。任何其他答案都会有太多的警告。
当你做到这一点,这里是你可以比较一个方法:
std::copy(source.begin(), source.end(), destination);
试试这个: -
std::vector<int> newvector(oldvector);
对于复制阵列中的尝试: -
std::copy(source.begin(), source.end(), destination);
-1。 Asker想要一个数组,而不是一个新的向量。 –
对不起,我读错了,然后这将是伟大的回答罗布: - std :: copy(source.begin(),source.end(),destination); –
我刚刚更正。感谢Thanx !!! :) –
在C++中,**总是**使用'std :: copy'而不是'memcpy'(前者会在po ssible)。 – ildjarn
我不知道它有多快,但是你可以使用'std :: copy'。 –
我认为这里最明显的答案是:_为什么(你认为)你需要从矢量拷贝到数组中?_矢量_is_是一个数组,可以这样使用。作为一个副作用,_no_ all_无疑是最快可能的复制操作。 – sbi