簡體   English   中英

當 std::vector 重新分配其內存數組時,使用的是復制構造函數還是移動構造函數?

[英]When std::vector reallocate its memory array, is copy constructor or move constructor used?

當 std::vector 重新分配其內存數組時,使用什么樣的復制/移動構造函數將元素復制/移動到新房子?

如果移動構造函數存在並且是noexcept則使用它。 否則使用復制構造函數。

使用可能拋出異常的移動構造函數是不可取的,因為可能會發生某些對象被移動到新存儲,然后異常阻止其余對象被移動的情況。

cppreference.com 站點確實說,如果對象是 non-copyable ,但具有非 noexcept 移動構造函數,那么它將使用該移動構造函數,如果拋出異常,則具有“未指定的行為”。 我想這意味着元素可能會從向量中丟失。

暫無
暫無

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

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