- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
为什么在C++11中提供了_n
版本的copy
、fill
和generate
,为什么只有这些算法?
最佳答案
一般来说,STL 只提供原语,从中可以定义适当改编的变体。
SGI 文档给出了提供您提到的异常(exception)情况的以下理由:
copy_n
适用于不是正向迭代器的输入迭代器。
fill_n
和 generate_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/
嗨我正在尝试执行以下操作: struct A { A(int i, int j){} } int startValue = 10; vector v; generate_n(back_inserter
我有一个非常简单的类,它有一个 x、y 和 z 值。像这样: class Individual { public: static std::unique_ptr Spawn(std::mt19
最近我一直在使用 STL 算法和 lambda 来实现重要的功能。几个星期前,有人告诉我,谓词(例如 std::count_if 中使用的 lambda)修改传递给它的值是非法的。 我只是接受了这一点
出于好奇! 你可以用 iterator 的返回 std::generate_n 做什么? 返回值 : Iterator one past the last element assigned if co
我正在制作一个使用 std::generate_n function 的程序.我可以让它与数组一起工作,但我不知道如何让它与列表容器一起工作。这是我所拥有的: #include #include
我使用以下结构作为 STL 的 generate_n 算法的输入: struct GenerateNumber { GenerateNumber () : i(0) {} in
以下代码在 XPSP3 上的 VC++ 8 下可以正确编译,但运行它会导致运行时错误。 我的标题看起来像: #include #include #include template class t
大家好,我将展示三个代码 1 和 2 可以正常工作,但第三个不起作用。我想了解为什么不起作用或为什么其他两个起作用? (strrand 函数产生随机字符串) 1. int main(){ ve
std::vector thread_pool; ... std::generate_n(std::back_inserter(thread_pool), cpu_cores,
我想用字母表中的字母填充一个 vector 。所以我写了以下内容: #include #include #include #include char i='a'; char f(){retur
我是 std::generate 的新手,并试图构建一个使用它来初始化 vector 的程序。然而,它的表现与我的预期不同。 我有一个抽象基类: template class RandomAllel
为什么在C++11中提供了_n版本的copy、fill和generate,为什么只有这些算法? 最佳答案 一般来说,STL 只提供原语,从中可以定义适当改编的变体。 SGI 文档给出了提供您提到的异常
当使用在其捕获中具有初始化程序的可变 lambda 对 std::generate_n 使用并行执行时,并行访问初始化值是否线程安全? [MCVE] #include #include #inclu
我想使用 std::generate_n 填充 std::map 但无法正常工作。我尝试过的是这样的: unsigned number_of_pairs{5}; std::map my_map; au
为了尽可能多地使用 STL,我想知道是否可以结合使用 std::generate 和 std::back_inserter 以便我可以执行与以下代码相同的操作: static const size_t
我在看 generate()和 generate_n()在 cppreference 中,我试图理解为什么 generate() 需要 ForwardIterator,而 generate_n() 需
我是一名优秀的程序员,十分优秀!