stl源码解析里面分析copy函数的问题
stl源码解析里面分析copy函数的时候,说最快的是调用memmove函数
但我看了memmove的源代码,我感觉和RandomAccessIterator版本的copy函数相比,应该一样快啊。
为什么说memmove是操作在底层,速度最快。
void *memmove(void *dest, const void *src, size_t count)
{
assert(dest != NULL && src != NULL)
if (dest < src)
{
char *p = (char *)dest;
char *q = (char *)src;
while (count--)
{
*p++ = *q++;
}
}
else
{
char *p = (char *)dest + count;
char *q = (char *)src + count;
while (count--)
{
*--p = *--q;
}
}
return dest;
}
这是RandomAccessIterator版本的copy函数
template <class RandomAccessIterator, class OutputIterator, class Distance>
inline OutputIterator
__copy_d(RandomAccessIterator first, RandomAccessIterator last,
OutputIterator result, Distance*)
{
for (Distance n = last - first; n > 0; --n, ++result, ++first)
*result = *first;
return result;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
。。连续的字节拷贝肯定比一个个迭代器访问赋值快的多