这是组合std :: generate_n和std :: back_inserter的正确方法吗?

NoS*_*tAl 8 c++ stl c++11

在我的任务:)尽可能多地使用STL我想知道是否可以使用std :: generate和std :: back_inserter组合,以便我可以执行与以下代码相同的操作:

static const size_t nitems=1024*1024;
std::string mrbig;
for (size_t pos=0; pos<nitems; ++pos)
    mrbig.push_back('a'+ (rand()%26));
Run Code Online (Sandbox Code Playgroud)

我试过了

 std::generate_n(std::back_inserter(mrbig),nitems,[](){return 'a'+(rand()%26);});
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常,但我想确保我没有弄乱一些东西.

eca*_*mur 11

generate_n要求它的第一个参数满足OutputIterator,哪个back_insert_iterator(它iterator_categoryoutput_iterator_tag).

您的代码可能存在的问题:

std::generate_n(std::back_inserter(mrbig),nitems,[](){return 'a'+(rand()%26);});
Run Code Online (Sandbox Code Playgroud)