c++ - stl源码解析里面分析copy函数的问题

【字号: 日期:2023-04-18浏览:27作者:雯心

问题描述

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;}

问题解答

回答1:

。。连续的字节拷贝肯定比一个个迭代器访问赋值快的多

相关文章: