14.理解copy_if算法的正确实现
生活随笔
收集整理的這篇文章主要介紹了
14.理解copy_if算法的正确实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
STL中有11個算法名字包含"copy":
copy
copy_backward
replace_copy
reverse_copy
replace_copy_if
unique_copy
remove_copy
rotate_copy
remove_copy_if
partial_sort_copy
unitialized_copy
但是STL中卻不包括copy_if的實現,如果需要它,必須自己實現。
下面是copy_if的正確實現:
下面是SGI STL中copy算法的實現:
template <class _InputIter, class _OutputIter, class _Distance> inline _OutputIter __copy(_InputIter __first, _InputIter __last, _OutputIter __result, input_iterator_tag, _Distance*) {for (; __first != __last; ++__result, ++__first)*__result = *__first;return __result; }template <class _RandomAccessIter, class _OutputIter, class _Distance> inline _OutputIter __copy(_RandomAccessIter __first, _RandomAccessIter __last, _OutputIter __result, random_access_iterator_tag, _Distance*) {for (_Distance __n = __last - __first; __n > 0; --__n)?{*__result = *__first;++__first;++__result;}return __result; }注意,copy、copy_if算法中都沒有對__result進行有效性判斷(也不法進行判斷), 所以調用方必須確保目標位置__result有效,否則會出現未定義行為。
總結
以上是生活随笔為你收集整理的14.理解copy_if算法的正确实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 13.transform确保目标空间足够
- 下一篇: 15.确保“lessT“与“operat