gpt4 book ai didi

c++ - 转换为 const vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:23 25 4
gpt4 key购买 nike

我手头有一些 Foo 的 vector ,我想将它转换成一个 Bar 的 vector ,以及一个 const 的 vector .我能想到的最好的方法是:

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 要求。您仍然可以将对 const 的引用公开给其他范围。

否则,这应该没问题。 lambda 主体可能会被内联,lambda 的“创建”是一个编译时过程,返回值将被移动或完全删除。实际上,您的方法非常优雅。

关于c++ - 转换为 const vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38264168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com