我是C++的相對初學者。我正在研究與預測財產財務相關的模型,並且我有幾個問題正在獲取我的數據結構設置。C++中的多維動態數組類
有點背景 - 我想要做的具體任務是爲關鍵數據結構設置類變量 - 一種叫做PropFinance的結構。這種結構將把我所有的關鍵信息放在一個給定的屬性上(對它們集合中的每個屬性進行迭代),包括對未來性能的預測。 (1)迭代次數(Iterations) - 我們要產生預測的次數(隨機迭代) (2)長度的預測(NumofPeriods) - 我們要預測多少個週期
PropFinance類在其中包含79個變量,其中包含屬性詳細信息。一個簡單的例子 - 費用。對於開支和許多我喜歡的變量,我需要創建一個3D數組 - 每個迭代一個維度,每個預測時間段一個維度。所以,理想情況下,我想有一個變量的費用:
class PropFinance {
double Expenses[Iterations][NumofPeriods];
}
,但我不知道在編譯時迭代和NumofPeriods。我知道運行時開始這兩個變量的值(並且它們對於當前程序執行的所有迭代/屬性都是恆定的)
我的問題是如何在這些數組的大小被動態更新時該程序運行?根據我在這個網站和其它方面的研究,這似乎是兩個主要的方法來做到這一點是
(1)使用 (2)使用指針的類定義,然後使用new和delete管理
但即使有了這兩個選項,我也不確定它是否能夠在第三維上工作(我看到的所有示例都需要動態調整一個維度)。有人可能會發表一個口頭解釋或(更好)一個簡單的代碼示例,說明如何在上面的(1)或(2)中工作?任何指導哪個選項是可取的,我們將不勝感激(但不想開始「什麼更好」的辯論)。當陣列的大小將不斷變化時,似乎向量更合適...
該模型的整體速度至關重要,並且隨着我們擴展迭代次數以及屬性事物迅速變大 - 所以我想盡可能有效地做事。
對不起,我沒有發佈代碼 - 如果人們無法辨別我從上面提出的問題,我可以嘗試將某些東西放在一起。
謝謝!我想澄清一下,vector是一個高效的選項 - 如果我預先聲明瞭這些數組(不考慮編譯時信息問題),那麼總體上來說動態地重新調整數組數千次的速度並不快得多?如果我預測了180次25次迭代(平均大小的運行),那麼我將有效地重新排列陣列4500次。這兩種選擇之間沒有太多的性能差異?對於我這個無知的問題抱歉 - 我知道在「事前大小」的情況下,我仍然需要做4,500個任務,所以也許不會太慢? – brentf 2013-04-29 19:43:30
只有你知道週期和迭代次數,你可以用std :: vector :: reserve(size_t)預先分配向量。該函數將容器的容量設置爲期望的數量,以便在執行push_back時避免重新分配。 – ilmale 2013-04-29 20:03:37
這很有道理 - 謝謝你的澄清。 – brentf 2013-04-29 20:14:02