непонятные эффекты:
есть список ot_record* rec и вот такая вот функция:
void ot_order::null_del() { printf("ot_order::null_del()\n"); QValueList<ot_record*>::Iterator i; for(i=rec.begin();i!=rec.end();i++) { printf("id=%i\trid=%i\n",(*i)->i_id,(*i)->i_rid); if((*i)->i_id==0){i=rec.remove(i);} } printf("ot_order::null_del() return\n"); }
она всего-лишь навсего удаляет из списка элементы помеченные i_id=0
вызываем (4 раза): if(f==0)null_del(); if(f==0)null_del(); if(f==0)null_del(); if(f==0)null_del();
получается следующая картина: ot_order::null_del() id=1 rid=0 id=0 rid=2 id=0 rid=2 id=0 rid=2 id=0 rid=2 id=0 rid=4 id=0 rid=10 id=0 rid=4 id=0 rid=14 id=0 rid=14 id=0 rid=14 id=1 rid=0 id=0 rid=2 id=0 rid=2 id=0 rid=10 id=0 rid=14 id=0 rid=14 id=1 rid=0 id=0 rid=2 id=0 rid=10 ot_order::null_del() return ot_order::null_del() id=1 rid=0 id=0 rid=1 ot_order::null_del() return ot_order::null_del() id=1 rid=0 id=0 rid=14 id=1 rid=0 ot_order::null_del() return ot_order::null_del() id=1 rid=0 ot_order::null_del() return ot_order::page_del() return
как это понимать ???