移出向量的空狀態
在 C 標準庫類型中,移出物件通常置於有效但未指定的狀態。然而,人們對向量是否明確屬於此規則感到好奇。
移動建構函數行為
對於向量的移動建構函數,移出的向量總是空,因為恆定複雜性的要求。建構子從來源向量中竊取資源來建構新實例,使原始向量處於空狀態。
移動賦值運算子行為
向量移動的行為賦值運算子更細緻,取決於分配器:
情況1:傳播移動賦值= True
在這種情況下,移出向量將始終為空。賦值運算子銷毀元素、釋放容量、從來源向量轉移記憶體緩衝區的所有權,並移動分配器。這使得原始向量處於空狀態。
情況 2:傳播移動分配 = False,相等分配器
與情況 1 類似,移出向量為由移動賦值運算子清空。分配器不會移動,大小寫差異是動態發生的。
情況 3:傳播移動分配 = False,不相等的分配器
最複雜的情況涉及不同的分配器。此處,移動分配不能移動資源或分配分配器。相反,它將各個元素從來源向量移動到目標向量。根據分配器功能和元素構造要求,移出向量不一定為空。但是,某些實作可能會選擇在來源向量上明確呼叫clear(),並將其留空。
以上是C 中移出向量的狀態是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!