今天犯了个二逼问题,我想清理一个queue里对象,用了以下方法:
1 while(int i=0;i<objQueue.size();++i) 2 { 3 T* p_obj = objQueue.front(); 4 delete p_obj; 5 objQueue.pop(); 6 }
结果里边有一半的对象没有被清理掉,因为i不断增加,而size()不断减小,所以正确方法如下:
1 while(!objQueue.empty()) 2 { 3 T* p_obj = objQueue.front(); 4 delete p_obj; 5 objQueue.pop(); 6 }