在本討論中,我們研究與從同一向量推回元素相關的潛在陷阱並探索
潛在危險
考慮以下程式碼片段:
<code class="cpp">vector<int> v; v.push_back(1); v.push_back(v[0]);</code>
第二個push_back運算可能會重新分配向量,使第一個元素的引用無效。因此,這種做法一般被認為是不安全的。
安全做法
為了確保此類操作的安全,我們可以使用reserve方法提前分配足夠的空間:
<code class="cpp">vector<int> v; v.push_back(1); v.reserve(v.size() + 1); v.push_back(v[0]);</code>
標準一致性
上述行為已在C 標準(或類似問題)中得到解決:
1) Parameters taken by const reference can be changed during execution of the function Examples: Given std::vector v: v.insert(v.begin(), v[2]); v[2] can be changed by moving elements of vector
然而,這個問題並不被認為是缺陷,因為即使其內容被修改,向量也有責任確保功能。
以上是當從同一向量推送元素時,依賴原始引用是否安全?的詳細內容。更多資訊請關注PHP中文網其他相關文章!