我想交換兩個標準::名單< dontCare項*> ::在Visual 2005化std :: swap返回0xBAADF00D
Iter it1 = ... ,it2 = ...; // it1 and it2 are ok, not end() or such
if(...){
std::swap(it1,it2);
}
的調劑工作,但迭代當我離開的,如果()範圍,it1指向0xbaadfood。 It2是好的,但我嘗試了幾個變種,包括swap_iter和一個手工交換。
任何幫助表示讚賞:)
編輯
好了,羞時間。
交換it1是if範圍內的局部變量。 F ** king cut'n pasting。
F ** king cut'n pasting。對不起,浪費你的時間:/
不要吃它。它會給你火箭筒。 – 2010-07-27 17:11:38
我認爲我們需要多一點的代碼...... – 2010-07-27 17:22:36
你真的交換了在if範圍之外定義的迭代器嗎?還是你用在if中定義的一些迭代器交換?容器是否在'if'中定義? – 2010-07-27 17:38:29