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

问题描述 投票:0回答:1

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

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

c++ stl c++11
1个回答
14
投票

generate_n
要求其第一个参数满足
OutputIterator
back_insert_iterator
满足(其
iterator_category
output_iterator_tag
)。

您的代码的潜在问题:

std::generate_n(std::back_inserter(mrbig),nitems,[](){return 'a'+(rand()%26);});
© www.soinside.com 2019 - 2024. All rights reserved.