首頁 >後端開發 >C++ >如何在 C 0x 中安全地重複使用移動的容器?

如何在 C 0x 中安全地重複使用移動的容器?

DDD
DDD原創
2024-12-02 16:24:12692瀏覽

How to Safely Reuse a Moved Container in C  0x?

重用移動的容器:探索C 0x 標準草稿

當前的問題旨在闡明重用移動的容器的正確方法在C .根據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

向量容器被移到container2,使容器處於未指定狀態。根據標準,該狀態允許無條件操作。因此,在容器2(版本2)上呼叫clear會將其返回到已知狀態。

或者,使用版本3重新初始化容器也會達到所需的結果。此方法稍微迂迴一些,但允許潛在的最佳化。然而,它也可能導致錯誤。

因此,重複使用已移動容器的正確方法是清除它或重新初始化它。版本 2 是首選,因為它明確地將容器重置為已知狀態,並避免了與版本 3 相關的潛在陷阱。

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

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