gpt4 book ai didi

c++ - 语言数组和 std::array 初始化之间有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:48 24 4
gpt4 key购买 nike

std::array 支持聚合初始化,但是这里有什么问题呢?如果使用代码 (1),vc10.0 和 g++ 4.7.2 都会提示初始化器太多。但是,如果我改用代码 (2),则一切正常。

#include <array>

struct elem_t { char c; unsigned n;};

struct my_struct_t
{
int i;
// std::array<elem_t, 2> a; // (1) cause error
// elem_t a[2]; // (2) ok
};

int main()
{
std::array<int, 3> ai[] = {{1,2,3},{4,5,6}}; // ok

my_struct_t var[] =
{
{ 0, { {'a',1U}, {'b',2U}} }, // in question?
};
}

最佳答案

尝试额外的大括号——array 本身需要一对额外的大括号:

my_struct_t var[] = { { 0, { { { 'a', 1 } } } }
, { 1, { { { 'c', 3 } } } }
};

// ^- mystruct[]
// ^- mystruct
// ^- array
// ^- elem_t[2]
// ^- elem_t

大括号可以在顶层折叠,但这可能是不允许折叠的情况,或者可能还没有编译器支持。

关于c++ - 语言数组和 std::array 初始化之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15026254/

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