用 conversion/scale 从向量构造向量
Construct vector from vector with conversion/scale
全部
假设我得到了一个以 cm 为单位的向量,并且想构造另一个以 mm 为单位的向量(或带偏移的 mm,或者...,所以这不是很简单)。
完成此类任务的好方法是什么?
我写了一些代码来做迭代器适配器
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
。
全部
假设我得到了一个以 cm 为单位的向量,并且想构造另一个以 mm 为单位的向量(或带偏移的 mm,或者...,所以这不是很简单)。
完成此类任务的好方法是什么?
我写了一些代码来做迭代器适配器
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
。