私はFoo
のベクトルを手元に持っています。それをBar
のベクトルとconst
のベクトルに変換したいと思います。私は考えることができる最善の方法は次のとおりです。constベクトルに変換する
Bar foo2bar(const Foo& foo);
std::vector<Foo> foos = {...};
const std::vector<Bar> bars = [&foos] {
std::vector<Bar> bars;
bars.reserve(foos.size());
std::transform(foos.cbegin(), foos.cend(),
std::back_inserter(bars),
foo2bar);
return bars;
}();
そして私は、ラムダの戻り値は、ほとんどのコンパイラで省略されるべきだと思うので、これは理想に近いはずです。唯一の欠点はおそらくラムダを作成する必要があることですが、それはあまり問題ではないと思います。
は、このアプローチを持つ任意の陰湿な問題があり、(例えば、より速く、クリーナー)任意のより良い方法はありますか? C++ 11が利用可能です。
少し時代遅れだが、スーパーセーフなコードになる)ので、何かを理解しようとする必要がある。提案していただきありがとうございます! –
@ZizhengTai:そうです、可能であれば、私は 'const'を提唱しています。しかし、線を引く場所を知る必要があります。 –