c – 插入矢量变换

我之前在连接两个std :: vectors的最佳方法上发布了一个
question,其中必须首先转换一个向量.虽然使用std :: transform的显而易见的解决方案可能不是理论上最优的解决方案,但多容量检查的成本不太可能是显着的.

但是,如果我们考虑插入一个必须转换为另一个向量的向量的更普遍的问题,那么现在可能存在潜在的重大开销.

这样做的最佳方法是什么?

最佳答案 @ VaughnCato为您的
other question使用boost :: transform_iterator的
approach也适用于这个:

auto vec1begin = boost::make_transform_iterator(vec1.begin(), f);
auto vec1end = boost::make_transform_iterator(vec1.end(), f);
vec2.insert(middle, vec1begin, vec1end);
点赞