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/