почему вместо
template<typename ForwardIter,
typename OutputIter, typename UnaryPred>
OutputIter copy_if(ForwardIter begin, ForwardIter end,
OutputIter dest, UnaryPred f) {
while(begin != end) {
if(f(*begin))
*dest++ = *begin;
++begin;
}
нельзя написать так:
template<typename ForwardIter,
typename OutputIter, typename UnaryPred>
OutputIter copy_if(ForwardIter begin, ForwardIter end,
OutputIter dest, UnaryPred f) {
while(begin != end) {
if(f(*begin))
*dest++ = *begin++;
}
Здравствуйте, Аноним, Вы писали:
А>почему вместо
А>А>template<typename ForwardIter,
А> typename OutputIter, typename UnaryPred>
А>OutputIter copy_if(ForwardIter begin, ForwardIter end,
А> OutputIter dest, UnaryPred f) {
А> while(begin != end) {
А> if(f(*begin))
А> *dest++ = *begin;
А> ++begin;
А> }
А>
А>нельзя написать так:
А>А>template<typename ForwardIter,
А> typename OutputIter, typename UnaryPred>
А>OutputIter copy_if(ForwardIter begin, ForwardIter end,
А> OutputIter dest, UnaryPred f) {
А> while(begin != end) {
А> if(f(*begin))
А> *dest++ = *begin++;
А> }
А>
потому что f(*begin) может вернуть false.
Здравствуйте, swamper, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>почему вместо
S>э... а в какой реализации стандартной бибиотеки присутствует copy_if?
в HP STL был... а в Стандарте нету
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>