从具有转换/缩放的矢量构建矢量

Construct vector from vector with conversion/scale

本文关键字:构建 缩放 转换      更新时间:2023-10-16

All

假设我得到了以厘米为单位的数据向量,并希望构造另一个以毫米为单位的向量(或带有移位的毫米,或......,所以它不是很简单(。

完成这项任务的好方法是什么?

我写了一些代码做迭代器适配器

struct scaling_iterator_adaptor {
...
};
vector v_mm{ scaling_iterator_adaptor{v_cm.begin()}, scaling_iterator_adaptor{v_cm.end()} };

有没有更好的方法来完成这样的任务?概念上不同的方式?

如果不是必须使用已经包含的所有数据来构造它,则可以使用标准算法:

std::vector<double> v_cm{1, 3.14, 4.2};
std::vector<double> v_mm(v_cm.size());
std::transform(v_cm.cbegin(), v_cm.cend(), v_mm.begin(), [](double x){ return x * 10; });

如果您不想用零预填充目标,则可以使用std::back_inserter