所有
假设我得到了带有厘米数据的向量,并希望构建另一个向量,但是以毫米为单位(或带有移位的mm,或者......,所以它不是很简单)。
完成这项任务的好方法是什么?
我写了一些代码做迭代器适配器
struct scaling_iterator_adaptor {
...
};
vector v_mm{ scaling_iterator_adaptor{v_cm.begin()}, scaling_iterator_adaptor{v_cm.end()} };
有没有更好的方法来完成这样的任务?概念上不同的方式?
答案 0 :(得分:3)
如果构造并不是必须包含已包含的所有数据,您可以使用标准算法:
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
。