std::generate返回void:

template<typename ForwardIterator, typename Generator>
void generate(ForwardIterator first, ForwardIterator last, Generator gen);

std::for_each返回Function时:
template<typename InputIterator, typename Function>
Function for_each(InputIterator first, InputIterator last, Function f);

SGI的documentation表明for_each的结果对于返回在算法过程中可能发生了变异的任何状态都是有用的。 generate是否相同?这是疏忽大意,还是存在界面差异的理由?

最佳答案

一个重要的区别是,虽然for_each对容器内容进行操作,但是generate只是覆盖了它。因此,传递给generate的函数对象无法收集有关容器内容的任何信息,因此之后没有理由返回它(其最终状态是容器内容的不变)。

关于c++ - 为什么std::generate返回状态类似于std::for_each?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7069614/

10-10 07:20