最近我發現了以下代碼,我保持:刪除最後一個元素與reverse_iterator的
for (reverse_iterator rit = base_container::rbegin(); rit != base_container::rend() && 0 < N; N--)
{
another_container->push_back(*rit);
base_container::erase((++rit).base());
}
它試圖從容器中取出的最後一個元素(STD ::在這種情況下列表)中使用reverse_iterator的循環。重點是它看起來應該可以正常工作,但它不會(由於迭代器無效而發生一些內存損壞),我想知道爲什麼?是否有任何限制或規定不這樣做?
謝謝。
P.S.爲了防止對解決方案進行任何改進,我已經重寫了它以使其可行。問題是爲什麼上面的代碼工作不正常?
不是你的問題的答案,但爲什麼這麼複雜?難道你不能先將整個容器複製並清除原來的容器嗎?另外,什麼是base_container? – MikeMB
std :: list正如我上面寫的 – Rom098
你是否從容器繼承了'base_container ::'建議? :-( – Jarod42