将 C 数组分配给 C 的 std::array? (std::array<T,U> = T\[U\]) - 从“T \[U\]”到“std::array<T,U>”不存在合适的构造函数

新手上路,请多包涵

我正在尝试将 C 数组分配给 C++ std::array。

我该如何做到这一点,最干净的方式并且不制作不需要的副本等?

做的时候

int X[8];
std::array<int,8> Y = X;

我得到一个编译器错误:“不存在合适的构造函数”。

原文由 Gizmo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 403
1 个回答

没有从普通数组到 std::array 的转换,但是您可以将元素从一个复制到另一个:

 std::copy(std::begin(X), std::end(X), std::begin(Y));

这是一个工作示例:

 #include <iostream>
#include <array>
#include <algorithm>  // std::copy

int main() {
    int X[8] = {0,1,2,3,4,5,6,7};
    std::array<int,8> Y;
    std::copy(std::begin(X), std::end(X), std::begin(Y));
    for (int i: Y)
        std::cout << i << " ";
    std::cout << '\n';
    return 0;
}

原文由 juanchopanza 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题