[語法] for Loop 裡做list::erase()
我有兩片段code如下
註:下述中沒有被宣告的變數視同class成員變數。
//----------片段一------------------
list<int>::iterator itInt = m_intList.begin();
conts list<int>::iterator itListend( m_intList.end() );
for( ; itInt != itListend ; ++itInt)
{
if( *itInt == 0 )
{
list<int>::iterator itTemp = ++itInt;
m_intList.erase( --itInt );
itInt = itTemp;
}
}
//----------片段二------------------
list<int>::iterator itInt = m_intList.begin();
conts list<int>::iterator itListend( m_intList.end() );
for( ; itInt != itListend ; )
{
if( *itInt == 0 )
itInt = m_intList.erase( itInt );
else
++itInt;
}
上面兩片段都是在loop裡面去做list::erase()的工作,第一段感覺
起來比較像是自己將斷掉的list再接起來確保loop可以繼續。
第二段中是用list::erase()傳回來的iterator取代 ++ itInt來確保loop
可以繼續。
我想請問各位前輩,這兩段中我個人覺得第二種是比較正確的,但我想
問問看前輩們對loop中進行list::erase()的這個動作的想法,前輩們都
怎麼做?
謝謝各位!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.128.56
推
05/30 22:59, , 1F
05/30 22:59, 1F
推
05/30 23:02, , 2F
05/30 23:02, 2F
→
05/30 23:03, , 3F
05/30 23:03, 3F
→
05/30 23:04, , 4F
05/30 23:04, 4F
→
05/30 23:05, , 5F
05/30 23:05, 5F
→
05/30 23:05, , 6F
05/30 23:05, 6F
→
05/30 23:06, , 7F
05/30 23:06, 7F
推
05/30 23:50, , 8F
05/30 23:50, 8F
推
05/31 00:43, , 9F
05/31 00:43, 9F
推
05/31 01:24, , 10F
05/31 01:24, 10F