因此,为了处理图像或类似的大块内存,显然有很多选择。
由于我是智能指针和RAII的粉丝,我想知道它是否更聪明:
shared_ptr
到std::vector
或
shared_array
指向动态分配的数组。选择一个与另一个相比,有什么概念,实践和性能影响?
答案 0 :(得分:3)
与比较std :: vector与C数组相同。
将shared_array
视为RAII C数组。你得到的只是自动内存释放。在处理返回数组的第三方代码时很有用。
从理论上讲,它在某些边缘情况下比std :: vector更快,但灵活性更低,安全性更低。
std :: vector可能是更好的选择。
答案 1 :(得分:2)
shared_ptr
至std::vector
+
允许摊还的常量时间push_back
-
在std::vector
shared_array
+
没有引入额外的间接级别-
不允许使用摊销的常量时间追加,除非您自己实施,这又需要额外的间接等级。