我手頭上有一些Foo
的矢量,我想將它轉換成矢量Bar
s和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;
}();
而且我覺得拉姆達的返回值應該由大多數編譯器被省略,所以這應該是接近理想。唯一的缺點是可能需要創建一個lambda,但我認爲這不是太多問題。
這種方法有什麼隱晦的問題,有沒有更好的方法(例如,更快,更清潔)? C++ 11可用。
是啊,這是我的團隊的風格指南的對象應該儘可能標註'const'(也許有時候有點迂腐,但是會讓超級安全的代碼),所以我必須嘗試找出一些東西。感謝您的建議! –
@ZizhengTai:是的,我儘可能提倡'const'。但是你必須知道在哪裏畫線。 –