[英]Dynamic array C++
我想在for循環中動態創建數組。 我有類似波紋管的東西:
for (int i = 0; i < line; i++){
complex* in[i] = new complex[8];
}
complex是用戶定義的數據類型。 有什么辦法可以做以上操作。 我為此感到錯誤。 我想為一個以上的數組(不能說我需要多少個數組)創建幾個指針,每個指針都指向一個特定的數組。
提前致謝。
如果“內部”數組每個都是8個元素,則可以使用此方法動態調整8個元素的complex
數組的大小:
std::vector<std::array<complex, 8> > c(line);
// new and delete are not needed here
在這種情況下,您當然可以用std::vector
替代std::vector
std::array
-根據您使用的庫, std::array
可能不可用。
當元素計數不變時, std::array
比std::vector
更加精確。 因此, std::array
可以進行大量的std::vector
優化。 這可能如何影響您的程序,可能無法衡量。
這樣做的好處是,庫實現已經過良好的測試,可以使您與之隔離並檢測到一些使用錯誤。
構造complex *in[i] = ...
沒有意義。 您不能一個接一個地聲明數組的元素。 您必須在循環之前聲明整個數組。
即,類似以下內容
complex *in[MAX_LINES];
// or you can allocate in[] dynamically:
// complex *in[] = new (complex*)[line];
for (int i = 0; i < line; i++){
in[i] = new complex[8];
}
當然,除非您特別需要C樣式的數組(例如-與C代碼進行接口連接),否則最好使用C ++向量/數組(如Justin在另一個答案中所示)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.