2016-09-24 51 views
-4

我写我在哪里使用矢量的阵列的形式的C++代码:获得误差在C++代码(矢量实现)

vector<int> s1[k]; 

在一些编译器,我没有得到任何错误,但在一些编译器,我得到错误:

Compile time error (error: ISO C++ forbids variable-size array 's1' compilation terminated due to -Wfatal-errors.)

我不明白为什么它在不同的编译器行为不同,我该如何解决这个问题?

+0

一些编译器允许非标准可变大小的数组,一些不。无论如何,你为什么需要一个c样式的矢量数组? – user463035818

+0

VLA不被C++标准支持。 –

回答

1

k可能不是恒定的。 C++不允许像C那样的可变长度数组。

使用 std::vector<std::vector<int>> s1(k)相反,如果它被认为是动态数组。

+0

@pharask那就不是恒定的:P – xinaiz

+0

@pharask我们没有看到'k'随时随地声明为const int和要求用户输入是*绝对不是*不变。 – ray

+0

@pharask仔细想想你的陈述。如果用户输入它,k怎么能保持不变? –