gpt4 book ai didi

c++ - std::array 初始化

转载 作者:IT老高 更新时间:2023-10-28 23:17:07 36 4
gpt4 key购买 nike

一个 std::array<T>本质上是一个包裹在 struct 中的 C 风格数组。 . struct的初始化s 需要大括号,数组的初始化也需要大括号。所以我需要两对大括号:

std::array<int, 5> a = {{1, 2, 3, 4, 5}};

但是我看到的大多数示例代码只使用了一对大括号:

std::array<int, 5> b = {1, 2, 3, 4, 5};

为什么允许这样做,与第一种方法相比,它有什么好处或缺点?

最佳答案

这样做的好处是您可以……少打字。但缺点是只有在声明具有该形式时才允许您省略大括号。如果您不使用 =,或者如果数组是一个成员并且您使用 member{{1, 2, 3, 4, 5}} 对其进行初始化,则您不能只传递一对大括号。

这是因为在将大括号传递给函数时,担心可能出现重载歧义,如 f({{1, 2, 3, 4, 5}})。但这引起了一些讨论,并生成了问题报告。

基本上,= { ... } 初始化总是能够省略大括号,如

int a[][2] = { 1, 2, 3, 4 };

这并不新鲜。新的是你可以省略 =,但是你必须指定所有的大括号

int a[][2]{ {1, 2}, {3, 4} };

关于c++ - std::array<T> 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8863319/

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