提升共享指针数组

时间:2015-04-23 10:49:55

标签: c++ pointers boost

我是新手,我遇到了提升指针。

float *value = new float[9]; 
value[0] = 5; ...

以上是我最初的c ++代码。

我将上面的内容转换为提升共享指针

boost::shared_ptr<float> value (new float);

但是当我尝试添加到值时,它给了我错误,我不能使用operator []。

我想这太基础了,但是我可以获得一些关于如何将值添加到boost指针指向的内存的信息。

1 个答案:

答案 0 :(得分:3)

boost::shared_ptr<>并非旨在用于保存一个“衰减”到指针的数组。

对于初学者来说,在销毁时它不会delete内存正确(它会调用delete而不是delete[]。)你必须建立自己的解除分配器来规避这个。可能但又乏味。

简单易用:使用std::vector<float>。在当前标准中,基础数据保证是连续的,data()可用于提取底层数组。

相关问题