vector v;
v.push_back(1);
v.push_back(v [0]);
如果第二個push_back觸發了reallocation,則對v [0]的引用無效。為了解決這個問題,可以使用以下方法:
vector v;
v.push_back(1);
v.Reserve(v.size()1);
v.push_back(v [0]); 通過調用儲備,我們明確請求足夠的內存,確保在隨後的插入過程中不會發生重新分配。 [&& && && && &&&華,根據C標準的行為,關於元素引用的push_back並未明確定義為缺陷,即使它可能導致無效的引用。這是因為標準需要vector ::插入才能正常工作,即使插入改變了其他元素的位置。