1

私はこのウェブサイトに出くわしました: http://www2.research.att.com/~bs/C++0xFAQ.html#lambdaラムダ関数について説明しています。提供された例を使用しようとしました。つまり、次のとおりです。

    vector<int> indices( notImportantNumber );
    int count = 0;
    fill(indices.begin(), indices.end(), [&](){ return ++count; });

同様に

    generate(indices.begin(), indices.end(), [&](){ return ++count; });

ただし、この例を fill で使用しようとすると、このエラーが発生し続けます:

エラー 1 エラー C2440: '=': 'const `anonymous-namespace'::' から 'long' に変換できません c:\program files\microsoft visual studio 10.0\vc\include\xutility 2692

なぜこれが起こっているのか誰にも分かりますか?の宣言にstd::fill()は、最後のパラメーターとしてのファンクターはありません。

4

2 に答える 2

5

そのサイトのエラーです。std::fillcallable ではなく、入力する値を取ります。

于 2012-07-05T12:33:00.467 に答える
3

std::fill最後のパラメーターとしてファンクターを想定していないため、リファレンスを参照してください

指定された値を [first, last) の範囲内の要素に割り当てます。

指定された範囲内のすべてのアイテムに割り当てられる単一の要素のみが必要です。

于 2012-07-05T12:33:30.820 に答える