Построить вектор из вектора с преобразованием / масштабом - PullRequest
0 голосов
/ 20 мая 2018

Все

предположим, что я получил вектор с данными в см и хотел бы построить другой вектор, но в мм (или мм со сдвигом, или ..., так что это не совсем просто).

Что было бы хорошим способом выполнить такую ​​задачу?

Я написал некоторый код, выполняющий адаптер итератора

struct scaling_iterator_adaptor {
    ...
};

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

Есть ли лучший способ выполнить такую ​​задачу?Концептуально иначе?

1 Ответ

0 голосов
/ 23 мая 2018

Если это не обязательно для построения со всеми уже содержащимися данными, вы можете использовать стандартные алгоритмы:

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, если вы этого не сделаетехотите предварительно заполнить цель нулями.

...