为什么不允许将变长数组用作矢量元素?

时间:2018-10-11 07:02:11

标签: c++

例如:

#include<vector>
using namespace std;
int main()
{
   vector<int[]> vec;//serious compiler error
   vector<int[2]> vec={{1,2}};//error:array must be initialized with a brace-enclosed initializer
}

此外,如何纠正第二个语法?我已经使用了括号括起来的初始化程序。

1 个答案:

答案 0 :(得分:11)

它不是可变长度的数组,那些在C ++中不存在。它是一个没有大小说明符的数组,一个不完整的类型不符合大多数(全部?)向量运算的要求。

第二次尝试尝试复制c数组(列表初始化总是会复制),而且也不支持。

如果需要数组向量,请将其拼写为std::vector<std::array<int, 2>>