14.理解copy_if算法的正确实现
生活随笔
收集整理的這篇文章主要介紹了
14.理解copy_if算法的正确实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
STL中有11個(gè)算法名字包含"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的實(shí)現(xiàn),如果需要它,必須自己實(shí)現(xiàn)。
下面是copy_if的正確實(shí)現(xiàn):
下面是SGI STL中copy算法的實(shí)現(xiàn):
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算法中都沒有對(duì)__result進(jìn)行有效性判斷(也不法進(jìn)行判斷), 所以調(diào)用方必須確保目標(biāo)位置__result有效,否則會(huì)出現(xiàn)未定義行為。
總結(jié)
以上是生活随笔為你收集整理的14.理解copy_if算法的正确实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 13.transform确保目标空间足够
- 下一篇: 15.确保“lessT“与“operat