首頁 > 後端開發 > C++ > 移出向量何時不為空?

移出向量何時不為空?

Susan Sarandon
發布: 2024-12-01 11:17:14
原創
990 人瀏覽過

When Is a Moved-From Vector Not Empty?

移出向量總是空嗎?

問題:

已知標準庫類型的物件可以從中移出,而移動操作可能會將移出的物件保留在未指定的位置狀態,沒有明確的要求將向量排除在外。但是,移出向量怎麼可能處於非空狀態呢?

答案:

一般來說,移出向量將為空,但情況並非總是如此。

具體案例:

移出向量的行為取決於所使用的操作(移動構造函數或移動賦值)以及與向量相關的分配器。

移動建構子:

向量(向量&& v)
登入後複製

在這種情況下,移出向量將始終為空。移動操作需要恆定的複雜性,需要將所有權從一個向量轉移到另一個向量,使前一個向量為空。

移動賦值:

vector& 運算子=(vector&& v)
登入後複製

有三種情況考量:

  1. 啟用分配器傳播:移出的向量將永遠為空。
  2. 停用分配器傳播和相等分配器:此行為與第一個場景類似,保留移出向量空。
  3. 分配器傳播禁用和不同的分配器:移出的向量可能會保留其元素。移動賦值操作被迫使用單獨的移動操作來傳輸元素,可能使原始元素完好無損。

應該注意的是,某些實作可能會選擇明確清除此中的移出向量場景,但這不是必需的。

以上是移出向量何時不為空?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板