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

时间:2012-08-21 07:48:21

标签: c++ stl c++11

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

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

我试过

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

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

1 个答案:

答案 0 :(得分:10)

generate_n要求其第一个参数满足OutputIteratorback_insert_iterator执行(iterator_categoryoutput_iterator_tag)。

您的代码存在潜在问题:

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