C++标准库 copy

编译器: 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
    将第二个类型参数(迭代器)覆盖掉第一个类型参数(迭代器), 详细分析
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。