gpt4 book ai didi

algorithm - 为什么是 `copy_n` 、 `fill_n` 和 `generate_n` ?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:36:11 25 4
gpt4 key购买 nike

为什么在C++11中提供了_n版本的copyfillgenerate,为什么只有这些算法?

最佳答案

一般来说,STL 只提供原语,从中可以定义适当改编的变体。

SGI 文档给出了提供您提到的异常(exception)情况的以下理由:

  • copy_n适用于不是正向迭代器的输入迭代器。

  • fill_ngenerate_n适用于不是正向迭代器的输出迭代器。

正如@Jared Hoberock 在评论中指出的那样,<memory> header 也有 uninitialized_ copy_n 的版本和 fill_n当计数已知时,它们是优化版本。

C++11 提供了一些其他方便的包装器(例如 find_if_not ),但是使用 lambda 谓词,您自己编写此类包装器会变得容易得多。

注意:还有一个search_n但这与 search 具有不同的语义因为后者会查看两个输入范围之间的重叠,而前者会查看来自单个输入范围的连续元素。

关于algorithm - 为什么是 `copy_n` 、 `fill_n` 和 `generate_n` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22382872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com