[英]stl::deque's insert(loc, val) - inconsistent behavior at end of deque vs other locations?
使用http://www.cppreference.com/wiki/stl/deque/insert作為參考,我將值插入雙端隊列的某些位置。
例如,如果雙端隊列A為:
a, b, d, e, g
使用指向d的迭代器,我可以:
A.insert(iter, c); // insert val c before loc iter
//deque is now a, b, c, d, e, g
並且iter仍然指向d。 但是,當iter指向g時,最后一個元素:
A.insert(iter, f);
//deque is now a, b, c, d, e, f, g
但是迭代器現在指向f!
我當前的解決方法是:
iter = A.insert(loc, val); // point iterator to element that was inserted before loc
iter++; // point iter back to loc
我沒有再測試過它或任何東西,花這么多時間跟蹤錯誤,只是為了發現在所有地方在stl中insert()的不一致行為,這很煩人。
與其他位置相比,為什么insert()的末尾行為有所不同? 還是我做錯了什么?
執行插入操作會使所有現有的迭代器無效,因此,通過重用舊的迭代器,您將獲得不可預測的行為(可能是崩潰)。
您的解決方法是正確的解決方案。
編輯:關於第二個問題, if (*iter == 'g')
之后缺少括號。 不過,將來請在新帖子中提出新問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.