問題

我正在嘗試實現一個基本結構化的演算法(C):

  1. 構建資料結構,包括

    (a) 向量(雙重)

    (b) 向量(向量(雙重))(代表稀疏矩陣A,內向量 大小不先知,也不同)

  2. 執行迭代演算法,對其進行大量計算 結構

為了提高效率,我想確保在第二部分之前,啟動記憶體是最佳分配的,因此如果可能,儲存在A中的向量在記憶體中相鄰而沒有任何開銷或任何東西.有沒有好的方法來做到這一點?

  最佳答案

如果您想使向量的建立更有效,您可以使用 vector::reserve,如果將資料附加到向量,那麼減少重新分配。

對向量的訪問始終儘可能高效. std::vector中的資料連續儲存.這意味著對於大量資料,如果內向量彼此間分配不相關,因為它需要相同數量的dereferencing.

一般來說,我會說STL非常有效,但除了reserve之類的函式之外,您無法做很多工作來最佳化它.

如果您需要更高的速度,則必須使用為您的用例最佳化的資料結構。

  相同標籤的其他問題

c++memoryvector