簡體   English   中英

為什么使用一個與另一個:`boost::shared_array` VS `boost::shared_ptr<std::vector> `?</std::vector>

[英]Why use one vs the other: `boost::shared_array` VS `boost::shared_ptr<std::vector>`?

因此,要處理 memory 的大塊圖像或類似圖像,顯然有很多選擇。

由於我是智能指針和 RAII 的粉絲,我想知道它是否對 go 更智能:

  • 一個shared_ptr到一個std::vector

或者

  • 到 go, shared_array指向一個動態分配的數組。

選擇一個與另一個的概念、實踐和性能影響是什么?

這與比較 std::vector 與 C 數組相同。

shared_array視為 RAII C 數組。 你得到的只是自動 memory 釋放。 在處理返回 arrays 的第 3 方代碼時很有用。 從理論上講,在某些邊緣情況下它比 std::vector 更快,但靈活性和安全性要低得多。

std::vector 可能是更好的選擇。

shared_ptrstd::vector

  • +允許攤銷常數時間push_back
  • -std::vector上引入了額外的間接級別

shared_array

  • +不會引入額外的間接級別
  • -不允許攤銷恆定時間 append,除非您自己實現它,這又需要額外的間接級別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM