[英]C++ Assigning array size as variable and assign value to the variable at runtime?
我真的是C ++編程的新手,請原諒我這個愚蠢的問題。
我有一個看起來像這樣的數組:
double myarray [15][20000]; // Works ok but stack overflow error if I change 15 to about 200
我想實現以下目標:
double myarray [total][20000];
然后在運行時我希望用戶輸入total的值:
cin>>total
請提供有關如何實現此目標的建議,以及解決此問題並避免堆棧溢出的最佳實踐。
謝謝。
使用vector
的vector
S:
int total;
cin >> total;
// (1) (2)
std::vector<std::vector<double>> myVec(total, std::vector<double>(20000));
// (1) is the first dimension and (2) is the second dimension
您可以像使用數組一樣使用它們,並且不會出現堆棧溢出:
myVec[0][4] = 53.24;
cout << myVec[0][4];
如果需要,您甚至可以即時將它們變大。
由於堆棧通常很小,並且試圖在其上分配太大的數組,因此您會得到堆棧溢出。 vector
使用動態上自由存儲區通常是更大的 ,不會給你一個溢出錯誤分配的內存。
同樣,在C ++中,必須在編譯時知道靜態數組的大小,這就是為什么您不能讀入數字並使用它的原因,而使用vector
可以在運行時調整它們的大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.