为什么int的二维数组会连续初始化?同时对每组数字初始化二维 vector 。
int main()
{
array<array<int, 2>, 2> td{ 2, 6, 4, 8 }; //array of arrays
for (int i = 0; i < 2; ++i)
for(int j = 0; j < 2; ++j)
cout << td[i][j] << ' ';
cout << endl;
vector<vector<int>> vtd{ { 5, 1 }, { 0, 2 } }; //vector of vectors
for (int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
cout << vtd[i][j] << ' ';
return 0;
}
结果如下:
2 6 4 8
5 1 0 2
最佳答案
std::array
是一个集合。当用这样的花括号初始化列表初始化聚合时,每个子聚合按顺序从列表中获取所需数量的元素,列表的其余部分用于初始化下一个元素,依此类推。特别是,这意味着 td
中的第一个数组采用前两个初始化器(因为它有两个元素),第二个数组采用其余两个。
std::vector
不是聚合,并且有一个显式定义的构造函数,该构造函数将 std::initializer_list
作为参数,它决定了列表初始化的语义.
关于c++ - 二维 std::array 上的初始化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21944003/