1

いくつかの int を持つベクトルを定義し、関数の結果を入力したいと考えていますget_a_value()。この方法でループを介して実行できます。

auto v = new std::vector<int>( 7 );
for ( int i = 0; i < 7; i++ )
    v->at(i) = get_a_value();

しかし、私を不快にさせるいくつかの冗長性があります。これは、ベクトルの初期化だけでラムダマジックで解決できますか?

auto v = new std::vector<int>( 7, /* something involving get_a_value() here */ );

の値はget_a_value()、呼び出しごとに異なる場合があります。はい、ポインターが必要です。

4

1 に答える 1

2

一般に、これが必要です:

std::vector<T> v;
v.reserve(n); // reserve space only, no need to fill with default-constructed T's

std::generate_n(std::back_inserter(v), n, get_a_T_value); // fill with n values

これが最も簡単で効率的です。宿題に合わせるのはあなたに任せます。

于 2012-06-13T22:10:51.353 に答える