我試圖爲我的矩陣類創建單塊內存,因爲std::vector<std::vector<double>>
沒有提供我想要的性能。所以我決定使用單個1d數組。所以我想爲這個使用double的shared_ptr。如何將偏移量添加到shared_ptr?
聲明變量我做:
matrix = std::make_shared<double []> (row*col);
我們獲得分配的東西到特定位置的元素:
std::shared_ptr<double> matrix;
要申報共享指針我沒有分配內存在矩陣中:
*(matrix + r*col + c) = 0.0;
這給了我錯誤說
'的錯誤:不對應的「運營商+」(操作數類型是「的std :: shared_ptr的」和「爲size_t」)
我想我們可以在指針使用+
。爲什麼它不讓我爲指針添加標量值?
爲什麼不使用'std :: vector matrix(row * col)'? –
NathanOliver
我不希望做自己的2D數學會比'vector>'更快。 –
使用'matrix.get()+ ...'。或者做Nathan上面說的。 –