1

これを のシンプルで素敵な使い方に変えることは可能std::transformですか?

int j = 0;
for (auto &vi : V)
{
    auto div_res = div(vi + j, 10);
    j = div_res.quot;
    vi = div_res.rem;
}

このコードは非常に単純なことを行っており、より短く、より明確にする必要があると感じています。

または、変換しない場合、この種のことを簡単にするstd関数はありますか?

4

1 に答える 1

3

どうですか:

std::transform(vi.begin(), vi.end(), vi.begin(), 
    [&j](auto elem) /* or const auto& elem */
    {
        auto div_res = div(elem + j, 10);
        j = div_res.quot;
        return div_res.rem;
    }
);

ただし、この場合、範囲ベースforはおそらく (良くはないにしても) よりも優れていstd::transformます。

于 2015-05-17T18:01:12.693 に答える