我如何声明 2d std::array
how do I declare a 2d std::array
我想使用 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;
}
}
如何为二维数组执行此操作。我可以在其中使用 auto 吗?
std::array
是一维的,没有二维的std::array
。您只需使用内部 std::array
作为外部 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;
}
}
}
#include <iostream>
#include <array>
int main (){
const size_t m = someInt;//the outer dim
const size_t n = anotherOne;//the inner one
std::array<std::array<int, m>, n> myArray;//it's an array containing m arrays
// each one of them has n integers
for( size_t i{}; i < m; ++i)
for (size_t j=0; j < n; j++){
myarray[ i ] [ j ] = fillIt;
}
}
如果你想使用初始化列表,你可以按如下方式使用它
std::array myArray{std::array{5,6},std::array{7,8}};//c++17
std::array<std::array<int, 2> > myArray{std::array<int, 2>{5,6},std::array<int, 2>{7,8}};
请注意,最后一次初始化用两个临时数组初始化数组,每个临时数组都有 2 int
个元素
我想使用 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;
}
}
如何为二维数组执行此操作。我可以在其中使用 auto 吗?
std::array
是一维的,没有二维的std::array
。您只需使用内部 std::array
作为外部 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;
}
}
}
#include <iostream>
#include <array>
int main (){
const size_t m = someInt;//the outer dim
const size_t n = anotherOne;//the inner one
std::array<std::array<int, m>, n> myArray;//it's an array containing m arrays
// each one of them has n integers
for( size_t i{}; i < m; ++i)
for (size_t j=0; j < n; j++){
myarray[ i ] [ j ] = fillIt;
}
}
如果你想使用初始化列表,你可以按如下方式使用它
std::array myArray{std::array{5,6},std::array{7,8}};//c++17
std::array<std::array<int, 2> > myArray{std::array<int, 2>{5,6},std::array<int, 2>{7,8}};
请注意,最后一次初始化用两个临时数组初始化数组,每个临时数组都有 2 int
个元素