为什么不允许使用可变长度数组作为向量元素?

big*_*iao 4 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
}
Run Code Online (Sandbox Code Playgroud)

另外,如何纠正第二个语法?我已经使用了大括号括起来的初始化器.

Sto*_*ica 11

它不是可变长度数组,在C++中不存在.它是一个没有大小说明符的数组,不完整的类型不符合大多数(所有?)向量操作的要求.

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

如果你想要一个数组矢量,拼写为std::vector<std::array<int, 2>>.

  • @bigxiao您应该阅读下一段说明这取决于向量上使用的操作. (2认同)
  • @bigxiao - 你不能.它只是不受支持.这并不是说固定大小的数组的向量没有用,但你需要使用`std :: array`来使它成为一个值类型. (2认同)