首页 > 解决方案 > 为什么不允许使用变长数组作为向量元素?

问题描述

例如:

#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
}

另外,如何纠正第二个的语法?我已经使用了大括号封闭的初始化程序。

标签: c++

解决方案


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

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

如果您想要一个数组向量,请将其拼写为std::vector<std::array<int, 2>>.


推荐阅读