【问题标题】:2D Array Value Assign After Declaration in C++在 C++ 中声明后的二维数组值分配
【发布时间】:2013-04-17 12:17:15
【问题描述】:

我知道当我们要在声明数组时为二维数组赋值时,我们会这样做:

int myArray[2][4] = {{1,2,3,4},{5,6,7,8}};

但是我应该如何在声明它“之后”分配值?我想做这样的事情:

int myArray[2][4];

myArray = {{1,2,3,4},{5,6,7,8}};

当我这样做时,编译器会出错。请帮忙。

【问题讨论】:

  • 普通数组不可赋值,因此您必须单独填写每个元素。您可以考虑使用标准库容器,例如std::array
  • 你能用 C++11 和 std::vector 代替吗?
  • 我在我的代码中使用了太多的数组。所以我根本无法用任何东西代替它。 :(
  • @Mushy 我想说这里更好的替代品是std::array<std::array<int,4>,2>。这将元素保持在连续的内存中并且没有开销。

标签: c++ arrays 2d declaration


【解决方案1】:

如果你想使用std::vector,那么你可以这样做:

#include <vector>

int main()
{
    std::vector< std::vector<int> > arrV ;

    arrV = { {1,2,3,4}, {5,6,7,8} };
}

或使用std::array:

#include <array>

int main()
{
    std::array<std::array<int,4>,2> arr ;

    arr =  {{  {{1,2,3,4 }}, {{5,6,7,8}}  }} ;
}

注意,内组和外组中的双组大括号。这个答案虽然只适用于 C++11。

【讨论】:

  • 以后可以像 arrV[1][2] 一样使用赋值吗?
猜你喜欢
  • 2016-12-09
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-14
相关资源
最近更新 更多