看板 EE_DSnP 關於我們 聯絡資訊
剛剛想了一下發現bst用_trace寫似乎會有bug 如果有以下程式碼 int main(){ BSTree mytree; mytree.insert("A"); mytree.insert("B"); mytree.insert("C"); mytree.insert("D"); // 排序為 A B C D BSTree::iteraotr it1 = mytree.begin(); // it1內為_root BSTree::iterator it2 = ++mytree.begin(); // it2內為_root,R BSTree::iterator it3 = ++(++mytree.begin()); // it3內為_root,R,R BSTree::iterator it4 = ++(++(++mytree.begin())); // it4內為_root,R,R,R cout << *it1 << *it3 << endl; // 輸出AC mytree.erase(it2); cout << *it1 << *it3 << endl; // 應該要輸出AC,但是會變成AD,因為B被拔掉了 cout << *it4 << endl; // 記憶體區段錯誤? } 目前想不到修正bug的方法 因為iterator又不能知道其他iterator的存在 還是_trace的操作和我想像的不一樣? ※ 編輯: shryuhuai 來自: 175.182.109.245 (11/26 22:35)