gpt4 book ai didi

c++ - 使用带有初始化列表的 std::array

转载 作者:IT老高 更新时间:2023-10-28 13:58:24 25 4
gpt4 key购买 nike

除非我弄错了,否则应该可以通过以下方式创建 std:array:

std::array<std::string, 2> strings = { "a", "b" };
std::array<std::string, 2> strings({ "a", "b" });

然而,使用 GCC 4.6.1 我无法让其中任何一个工作。编译器只是说:

expected primary-expression before ',' token

然而初始化列表在 std::vector 上工作得很好。那么它是哪一个?我是否误以为 std::array 应该接受初始化列表,或者 GNU 标准 C++ 库团队搞砸了?

最佳答案

std::array 很有趣。基本上是这样定义的:

template<typename T, int size>
struct std::array
{
T a[size];
};

它是一个包含数组的结构。它没有采用初始化列表的构造函数。但是std::array是C++11规则下的聚合,因此可以通过聚合初始化来创建。要聚合初始化结构体内部的数组,您需要第二组花括号:

std::array<std::string, 2> strings = {{ "a", "b" }};

请注意,标准确实建议在这种情况下可以省略额外的大括号。所以它可能是一个 GCC 错误。

关于c++ - 使用带有初始化列表的 std::array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8192185/

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