相关疑难解决方法(0)

std :: copy n元素或结尾

我想复制N个元素.

template< class InputIt, class Size, class OutputIt>
OutputIt myCopy_n(InputIt first, InputIt last, Size count, OutputIt result)
{
    Size c = count;
    while (first != last && c > 0) {
        *result++ = *first++;
        --c;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用std函数做到这一点?我还可以:

template< class InputIt, class Size, class OutputIt>
OutputIt myCopy_n(InputIt first, InputIt last, Size count, OutputIt result)
{
    if(std::distance(first, last) > count)
        return std::copy_n(first,count,result);
    return std::copy(first,last,result);
}
Run Code Online (Sandbox Code Playgroud)

然而,除了麻烦之外,它超过了范围两次(距离,复制).如果我正在使用变换迭代器或过滤迭代器,那么这些是对我的过滤器/变换函数的O(N)个不必要的调用.

template <class InputIt, class OutputIt>
OutputIt copy_n_max(InputIt begin, InputIt end, OutputIt last, size_t …
Run Code Online (Sandbox Code Playgroud)

c++ stl-algorithm

22
推荐指数
3
解决办法
3949
查看次数

标签 统计

c++ ×1

stl-algorithm ×1