是否可以转换 std::array<float, 4>
至 std::array<double, 4>
?
例如:
最佳答案
你可以为它创建一个函数: live sample
template<typename Dest, typename Src, std::size_t N, std::size_t... Is>
auto convert_array_to_impl(const std::array<Src, N> &src, std::index_sequence<Is...>) {
return std::array<Dest, N>{{static_cast<Dest>(src[Is])...}};
}
template<typename Dest, typename Src, std::size_t N>
auto convert_array_to(const std::array<Src, N> &src) {
return convert_array_to_impl<Dest>(src, std::make_index_sequence<N>());
}
...
auto double_array = convert_array_to<double>(float_array);
与循环相比,此函数实现的优势在于它可以在目标类型不可默认构造时工作。如果永远不会出现这种情况,则另一个答案中的循环会更直接一些。
关于c++ - std::array<float, 4> 到 std::array<double, 4> 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37304691/