簡體   English   中英

動態數組C ++

[英]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::arraystd::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.

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