相关疑难解决方法(0)

C++ 11:正确的std :: array初始化?

如果我按如下方式初始化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版本中的一个错误,还是故意做的?如果是这样,为什么?

c++ arrays initialization c++11 c++14

60
推荐指数
4
解决办法
6万
查看次数

如何使用初始化列表创建std :: array而不直接提供大小

我怎样才能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应该是他们的替代品.

c++ initialization stdarray

39
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×2

initialization ×2

arrays ×1

c++11 ×1

c++14 ×1

stdarray ×1