gpt4 book ai didi

c++ - 二维 std::array 上的初始化列表

转载 作者:太空狗 更新时间:2023-10-29 20:41:18 25 4
gpt4 key购买 nike

为什么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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com