簡體   English   中英

C ++將數組大小分配為變量,並在運行時將值分配給變量?

[英]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

請提供有關如何實現此目標的建議,以及解決此問題並避免堆棧溢出的最佳實踐。

謝謝。

使用vectorvector 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM