c++ - std::array<float, 4> 到 std::array<double, 4> 转换

标签 c++

是否可以转换 std::array<float, 4>std::array<double, 4>

例如:

http://coliru.stacked-crooked.com/a/d62b3846618e4f81

最佳答案

你可以为它创建一个函数: 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/

相关文章:

c++ - 如何在c++中实现函数超时

c++ - 你能使用 constexpr 变量的地址吗?

java - JNI、C++及其标准库

c++ - 静态成员类与普通的类 C 接口(interface)

c++ - 设置 QtWebEngineProcess 的参数

c# - 使用 SWIG 代理 C#->C++ 类包装器

c++ - 什么是 "cerr"和 "stderr"?

c++ - GetQueuedCompletionStatus 停止读取串口

c++ - 使用 std::map::at(const char*) 超出范围,使用/02 编译时除外

c++ - 当用户在 C++ 控制台应用程序中输入 "exit"时,我将如何退出应用程序?