首頁  >  文章  >  後端開發  >  當從同一向量推送元素時,依賴原始引用是否安全?

當從同一向量推送元素時,依賴原始引用是否安全?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-24 10:33:30983瀏覽

When Pushing Elements from the Same Vector, Is it Safe to Rely on the Original Reference?

從同一向量推回元素:一個警示故事

在本討論中,我們研究與從同一向量推回元素相關的潛在陷阱並探索

潛在危險

考慮以下程式碼片段:

<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中文網其他相關文章!

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