1、copy算法
不管在什么地方,copy() 都是一个常常被调用的函数。copy操作不外乎运用 赋值操作 或 拷贝构造 来进行,但是某些元素能够使用内存直接复制行为,能够提高效率,节省时间。
copy() 算法可将输入区间 [first, last) 内的元素赋值到输出区间 [result, result+(last-first)) 内。copy 算法用了各种办法来提高效率,包括函数重载、型别特性、偏特化等编程技巧,如下图所示:
现在看一下 copy 算法的代码:
//唯一对外接口
template<class InputIterator, class OutputIterator>
inline OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result)
{
return __copy_dispatch<InputIterator,OutputIterator>()( first, last, result);
}
下面是两个重载函数,针对原生指针const char* 和 const wchar_t*,进行内存直接拷贝操作:
inline char* copy(const char* first, const char* last, char* result)
{
memmove(result, first, last-first);
return result + (last - first);
}
inline wchar_t* copy(const wchar_t* first, const wchar_t* last, wchar_t* result)
{
memmove(resul