編譯器: MSVC v142
所屬文件: xutility
位置(行): 1799
函數(shù)名稱:copy
函數(shù)描述:
將一對(duì)迭代器區(qū)間(由第一和第二個(gè)類型參數(shù)組成)Deep copy
到另外一個(gè)迭代器(第三個(gè)類型參數(shù))中.備注:
copy函數(shù)是一個(gè)組織函數(shù), 它統(tǒng)籌指揮所有的行為發(fā)生.
源碼:
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
檢查迭代器區(qū)間(由第一和第二個(gè)類型參數(shù)組成)是否正確(驗(yàn)證倒掛墨闲、順序), 詳細(xì)分析 -
_Get_unwrapped
提取迭代器區(qū)間(由第一和第二個(gè)類型參數(shù)組成)的開(kāi)始和結(jié)束的兩個(gè)指針, 詳細(xì)分析 -
_Idl_distance
計(jì)算兩個(gè)指針的區(qū)間長(zhǎng)度, 詳細(xì)分析 -
_Get_unwrapped_n
嘗試提取迭代器的_Ptr
, 如果迭代器沒(méi)有_ptr
則原封不動(dòng)的返回這個(gè)迭代器, 詳細(xì)分析 -
_Copy_unchecked
將迭代器區(qū)間Deep copy
到另外一個(gè)迭代器中, 詳細(xì)分析 -
_Seek_wrapped
將第二個(gè)類型參數(shù)(迭代器)覆蓋掉第一個(gè)類型參數(shù)(迭代器), 詳細(xì)分析