我是新手,我遇到了提升指针。
float *value = new float[9];
value[0] = 5; ...
以上是我最初的c ++代码。
我将上面的内容转换为提升共享指针
boost::shared_ptr<float> value (new float);
但是当我尝试添加到值时,它给了我错误,我不能使用operator []。
我想这太基础了,但是我可以获得一些关于如何将值添加到boost指针指向的内存的信息。
答案 0 :(得分:3)
boost::shared_ptr<>
并非旨在用于保存一个“衰减”到指针的数组。
对于初学者来说,在销毁时它不会delete
内存正确(它会调用delete
而不是delete[]
。)你必须建立自己的解除分配器来规避这个。可能但又乏味。
简单易用:使用std::vector<float>
。在当前标准中,基础数据保证是连续的,data()
可用于提取底层数组。