如何声明 2d std::array

sho*_*ace 4 c++ stdarray

我想使用 2d std::array 因为我必须在程序中的某个点使用绑定检查。对于一维数组,我会这样做:

#include <iostream>
#include <array>
int main (){
  std::array<int,4> myarray;
  for (int i=0; i<10; i++){
     myarray.at(i) = i+1;    
  }
}
Run Code Online (Sandbox Code Playgroud)

我如何为二维数组做到这一点。我可以在其中使用 auto 吗?

Rem*_*eau 6

std::array是一维的,不存在二维的std::array。您只需使用innerstd::array作为outer的元素类型std::array,例如:

#include <iostream>
#include <array>

int main(){
  std::array<std::array<int,5>,4> myarray;
  for (int i=0; i<5; i++){
    for (int j=0; j<10; j++){
      myarray[i].at(j) = j+1;    
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 为了使这一点更清楚,请理解“二维数组”只是一个“数组的数组”。 (3认同)
  • @Remy Lebeau 这回答了我的问题。您还可以告诉我如何初始化 this-&gt; `std::array &lt;std::array&lt;int,2&gt;,2&gt; myarray{{5,6},{7,8}};` 。我收到“太多初始化程序”错误 (2认同)
  • @shoelace [为什么不能简单地初始化(带大括号)2D std::array?](/sf/ask/899113281/) (2认同)