如果我按如下方式初始化std :: array,编译器会给出一个关于缺少大括号的警告
std::array<int, 4> a = {1, 2, 3, 4};
Run Code Online (Sandbox Code Playgroud)
这解决了这个问题:
std::array<int, 4> a = {{1, 2, 3, 4}};
Run Code Online (Sandbox Code Playgroud)
这是警告信息:
missing braces around initializer for 'std::array<int, 4u>::value_type [4] {aka int [4]}' [-Wmissing-braces]
Run Code Online (Sandbox Code Playgroud)
这只是我的gcc版本中的一个错误,还是故意做的?如果是这样,为什么?
我怎样才能a3编译?
int main()
{
int a1[] = { 1, 2, 3 };
std::array<int, 3> a2 = { 1, 2, 3 };
std::array<int> a3 = { 1, 2, 3 };
}
Run Code Online (Sandbox Code Playgroud)
使用初始化列表时,对数组的大小进行硬编码是非常不方便的,也是很脆弱的,特别是长的列表.有什么工作吗?我希望如此,否则我很失望,因为我讨厌C阵列,std::array应该是他们的替代品.