stl 删除

void erase(vector &v)

{

     for(vector::iterator vi=v.begin();vi!=v.end();)

    {

        if(*vi % 2 == 0)

      {

                  cout << "Erasing " << *vi << endl; 

                 vi = v.erase(vi);

      } else 

           ++vi; 

     }

 }


 正确方法2: 

void erase2(vector &v)

 {

        for(vector::reverse_iterator ri=v.rbegin();ri!=v.rend();) 

       {

              if(*ri % 2 == 0) 

             {

                cout << "Erasing " << *ri << endl; v.erase((++ri).base()); //erase()函数期待的是正向iterator,故而这里要调 //用base()函数将逆向iterator转换为正向的 

             } else

                ++ri;

         }

 }

 2.map/list 正确方法 

void erase(map &m) 

{

       for(map::iterator mi=m.begin();mi!=m.end();) 

     {

          if(mi->second % 2 == 0)

         {

               cout << "Erasing " << mi->second << endl; m.erase(mi++); 

        } else

           ++mi;

     }

 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值