今天寫了兩句腦殘代碼

                  在一個鏈表中的指針,根據外部的參數定位到指針,而後刪除,我原先寫的是註釋掉的那部分,我經過迭代器刪除的那個指針在鏈表中的位置,而後經過迭代器刪除指針

那個指針指向的對象。但是卻忘了list.removeOne((*it))以後,鏈表變了,迭代器也就變了,因此會刪除其餘的對象,更嚴重的是越界,直接段錯誤。
code

                

bool ZigBeeNodeTreeWidget::removeNode(ushort devname, QList<QTreeWidgetItem *> &list)//去除一個樹節點項
{
    QList<QTreeWidgetItem*>::iterator it;
    for (it = list.begin();it != list.end();++it) {
        if ((*it)->text(0) == QString::number(devname)) {
            delete *it;
            list.removeOne((*it));
           
//            list.removeOne((*it)); 原來寫的
//            delete *it;
            return true;
        }
        //        else {
        //            return false;
        //        }
    }
    return false;
}
傷心死了,個人寶貴的時間。
相關文章
相關標籤/搜索