我想弄清楚在C++中創建矩陣的最佳方法。到目前爲止,我有兩個選項:在C++中實現大輸入矩陣的最有效方法?
1)一個存儲所有數據在一個「行」中,但使用模數和算術的向量可以像二維表一樣訪問。
OR
2)保持指向其他載體的載體,使得原始矢量表示的一組列和它指向包含下去每一列的行中的值的向量。
例如,如果我們有像這樣的表:
Name | Course | Grade
Allen | Chemistry | 76
Rick | English | 84
Mary | Physics | 93
我的第一個例子將所有數據存儲在一個向量是這樣的:
my_vec = {Name, Course, Grade,
Allen, Chemistry, 76,
Rick, English, 84,
Mary, Physics, 93}
(假設的異質性存儲在同一個向量中的值現在不是問題)
我的第二個示例將存儲數據,如下所示:
vec1 = {Name, Course, Grade};
當每個斑點將包含一個指向矢量
Name -> name_vec = {Allen, Rick, Mary}
Course -> course_vec = {Chemistry, English, Physics}
Grade -> grade_vec = {76, 84, 93}
在基質上的一些要求(在本實施例3的「子」的載體。):
它需要這就是爲什麼我在我的例子中選擇使用矢量的原因。
它需要能夠處理大量數據的有效
它必須能夠支持行插入(在結束時),行的刪除(從中間),附加一個矩陣到另一個(通過將其列到原始矩陣的左端,如果我們想象它像一個表)
有誰知道,如果這些選項之一是顯著比其他更有效的大投入?或者,有沒有人有更好的建議來實現這個矩陣?
您可以檢查Boost.uBLAS。 http://www.boost.org/doc/libs/1_60_0/libs/numeric/ublas/doc/index.html – mustafagonul
您是否希望主要針對速度或內存進行優化? – wally
我通常使用一個直矢量,並做我自己的下標計算。對於異構數據,我可能會使用指針向量。如果您有很多空單元(稀疏矩陣)並需要優化內存,其他選項可能更合適。 – Logicrat