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_iteratoriterator_categoryoutput_iterator_tag

コードの潜在的な問題:

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