首頁 >後端開發 >C++ >C 中移出向量的狀態是什麼?

C 中移出向量的狀態是什麼?

Patricia Arquette
Patricia Arquette原創
2024-11-23 21:42:15797瀏覽

What is the State of a Moved-From Vector in C  ?

移出向量的空狀態

在 C 標準庫類型中,移出物件通常置於有效但未指定的狀態。然而,人們對向量是否明確屬於此規則感到好奇。

移動建構函數行為

對於向量的移動建構函數,移出的向量總是空,因為恆定複雜性的要求。建構子從來源向量中竊取資源來建構新實例,使原始向量處於空狀態。

移動賦值運算子行為

向量移動的行為賦值運算子更細緻,取決於分配器:

情況1:傳播移動賦值= True

在這種情況下,移出向量將始終為空。賦值運算子銷毀元素、釋放容量、從來源向量轉移記憶體緩衝區的所有權,並移動分配器。這使得原始向量處於空狀態。

情況 2:傳播移動分配 = False,相等分配器

與情況 1 類似,移出向量為由移動賦值運算子清空。分配器不會移動,大小寫差異是動態發生的。

情況 3:傳播移動分配 = False,不相等的分配器

最複雜的情況涉及不同的分配器。此處,移動分配不能移動資源或分配分配器。相反,它將各個元素從來源向量移動到目標向量。根據分配器功能和元素構造要求,移出向量不一定為空。但是,某些實作可能會選擇在來源向量上明確呼叫clear(),並將其留空。

以上是C 中移出向量的狀態是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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