从矢量构造矢量与转换/规模

时间:2018-05-20 02:56:34

标签: c++ iterator stdvector

所有

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

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

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

struct scaling_iterator_adaptor {
    ...
};

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

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

1 个答案:

答案 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