10

在我的任务中:) 尽可能多地使用 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));

我试过

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

它似乎工作正常,但我想确定我没有搞砸什么。

4

1 回答 1

12

generate_n要求它的第一个参数满足OutputIterator,它back_insert_iterator确实(它iterator_categoryoutput_iterator_tag)。

您的代码的潜在问题:

std::generate_n(std::back_inserter(mrbig),nitems,[](){return 'a'+(rand()%26);});
于 2012-08-24T13:27:16.087 回答