![](/img/trans.png)
[英]Does it make sense to use std::shared_ptr<std::vector> instead of boost::shared_array?
[英]Why use one vs the other: `boost::shared_array` VS `boost::shared_ptr<std::vector>`?
因此,要處理 memory 的大塊圖像或類似圖像,顯然有很多選擇。
由於我是智能指針和 RAII 的粉絲,我想知道它是否對 go 更智能:
shared_ptr
到一個std::vector
或者
shared_array
指向一個動態分配的數組。選擇一個與另一個的概念、實踐和性能影響是什么?
這與比較 std::vector 與 C 數組相同。
將shared_array
視為 RAII C 數組。 你得到的只是自動 memory 釋放。 在處理返回 arrays 的第 3 方代碼時很有用。 從理論上講,在某些邊緣情況下它比 std::vector 更快,但靈活性和安全性要低得多。
std::vector 可能是更好的選擇。
shared_ptr
到std::vector
+
允許攤銷常數時間push_back
-
在std::vector
上引入了額外的間接級別shared_array
+
不會引入額外的間接級別-
不允許攤銷恆定時間 append,除非您自己實現它,這又需要額外的間接級別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.