2016-09-24 52 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怎麼能保持不變? –