我试图为我的矩阵类创建单块内存,因为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上面说的。 –