首頁 >後端開發 >C++ >您應該如何重複使用移動的 C 容器?

您應該如何重複使用移動的 C 容器?

Linda Hamilton
Linda Hamilton原創
2024-12-04 19:58:11716瀏覽

How Should You Reuse a Moved C   Container?

重用移動的容器:確保正確的行為

當容器被移動時,根據C 0x 標準草案,它被置於「有效但未指定的狀態” 。在這種情況下,了解如何正確重複使用移動的容器至關重要。

考慮以下程式碼片段:

std::vector<int> container;
container.push_back(1);
auto container2 = std::move(container);

// ver1: Do nothing
//container2.clear(); // ver2: "Reset"
container = std::vector<int>() // ver3: Reinitialize

container.push_back(2);
assert(container.size() == 1 && container.front() == 2);

根據標準,選項 ver3,其中涉及重新初始化移動容器,才是正確的做法。這是因為,在移動操作之後,物件被置於未指定的狀態。

標準定義了“有效但未指定的狀態”,如下所示:

“不是的對象狀態”指定的,除了滿足對象的不變量並且對像上的操作行為與其類型指定的一樣“

這意味著移出的物件仍然存在並且可以操作上,但前提是滿足先決條件。移動的容器並將其恢復到可用狀態。 ver2(涉及在移動的容器上呼叫clear())也是有效的。

不建議使用選項ver1,該選項不執行任何操作。

以上是您應該如何重複使用移動的 C 容器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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