Предположим, у меня есть std::array
двойных чисел, и я хотел бы, чтобы он был преобразован в числа с плавающей точкой:
std::array<double, 100> d_array{1,2,3};
std::array<float, 100> f_array; <--convert it from d_array;
При использовании std::vector
это чрезвычайно просто:
std::vector<float> f_array(d_array.begin(), d_array.end());
Iзнаете, std::array
является агрегированным типом, поэтому мне кажется, что мне нужно сделать несколько ручных переходов на месте, чтобы скопировать его в массив, или есть удобный способ сделать это?
Я считаю std::copy
шаблон также, например ::
std::array<float, 100> f_array;
std::copy(d_array.begin(), d_array.end(), f_array.begin());
Это не проще, чем векторная версия и не может быть const :
const std::array<float, 100> f_array;
Таким образом, разрушая иначе const-правильный код.