template<classForwardIt,classGenerator>voidgenerate( ForwardIt first, ForwardIt last, Generator g );(1)(C++20 前)template<classForwardIt,classGenerator>constexprvoidgenerate( ForwardIt first, ForwardIt last, Generator g );(1)(C++20 起)template<classExecutionPolicy,classForwardIt,classGenerator>voidgenerate( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last,
Generator g );(2)(C++17 起)
if(1){// std::generate_n 将相继的函数调用结果赋值给一个范围中的 n 个元素
std::vector<int>vc(10);int i =100;
std::generate_n(vc.begin(),5,[&i](){return++i;});print("after generate_n vc: ", vc);}
结果
after generate_n vc:10110210310410500000
七 std::iota(C++11)
定义 (注意头文件为 < numeric >)
template<classForwardIt,classT>voidiota( ForwardIt first, ForwardIt last, T value );(C++11 起)(C++20 前)template<classForwardIt,classT>constexprvoidiota( ForwardIt first, ForwardIt last, T value );(C++20 起)