std::generate
返回void
:为什么std ::生成的返回状态与std :: for_each类似?
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'只是覆盖内容;返回任何东西会有什么好处? –
假设我传递了一个随机数生成器来生成。返回RNG的状态将会很有用。 –
是的。但是这将是容器内容的不变。 –