我手头拥有一些Foo
向量,希望将其转换为Bar
向量,且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;
}();
我认为大多数编译器应该省略lambda的返回值,因此这应该是接近理想的。唯一的缺点可能是需要创建一个lambda,但我认为这不是太大的问题。
这种方法是否存在任何隐匿的问题?是否有更好的方法(例如更快、更干净)?可以使用C++11。
const
(有时可能有点过于迂腐,但能使代码更加安全),所以我得想办法解决。感谢您的建议! - Zizheng Tai