首頁  >  文章  >  後端開發  >  std::vector 是否在 Push_back() 上複製物件?

std::vector 是否在 Push_back() 上複製物件?

Linda Hamilton
Linda Hamilton原創
2024-11-04 04:44:01412瀏覽

Does std::vector Copy Objects on Push_back()?

std::vector 是否在 push_back() 上複製物件?

在使用 Valgrind 進行調查後,使用者得出結論,std::vector 建立了執行push_back()時物件的副本。這就提出了一個問題:

std::vector 不能在不複製的情況下儲存引用或指標嗎?

不幸的是,答案是肯定的。 std::vector::push_back() 依照設計,建立作為參數傳遞的物件的副本並將其儲存在向量中。

避免複製的替代方案:

如果所需的行為是儲存指標或引用而不是副本,請考慮使用std::vector或std::vector<:reference_wrapper>>。

注意:

使用指標或引用時,請確保引用的物件在整個過程中保持有效向量的生命週期。使用利用資源取得即初始化(RAII)的智慧指標可以有效解決這個問題。

以上是std::vector 是否在 Push_back() 上複製物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn