编译器: MSVC v142
所属文件: xutility
位置(行): 1799
函数名称:copy
函数描述:
将一对迭代器区间(由第一和第二个类型参数组成)Deep copy到另外一个迭代器(第三个类型参数)中.备注:
copy函数是一个组织函数, 它统筹指挥所有的行为发生.
源码:
template <class _InIt, class _OutIt>
inline _OutIt copy(_InIt _First, _InIt _Last, _OutIt _Dest) { // copy [_First, _Last) to [_Dest, ...)
_Adl_verify_range(_First, _Last);
const auto _UFirst = _Get_unwrapped(_First);
const auto _ULast = _Get_unwrapped(_Last);
const auto _UDest = _Get_unwrapped_n(_Dest, _Idl_distance<_InIt>(_UFirst, _ULast));
_Seek_wrapped(_Dest, _Copy_unchecked(_UFirst, _ULast, _UDest));
return _Dest;
}
-
_Adl_verify_range
检查迭代器区间(由第一和第二个类型参数组成)是否正确(验证倒挂、顺序), 详细分析 -
_Get_unwrapped
提取迭代器区间(由第一和第二个类型参数组成)的开始和结束的两个指针, 详细分析 -
_Idl_distance
计算两个指针的区间长度, 详细分析 -
_Get_unwrapped_n
尝试提取迭代器的_Ptr, 如果迭代器没有_ptr则原封不动的返回这个迭代器, 详细分析 -
_Copy_unchecked
将迭代器区间Deep copy到另外一个迭代器中, 详细分析 -
_Seek_wrapped
将第二个类型参数(迭代器)覆盖掉第一个类型参数(迭代器), 详细分析