当前位置: 代码迷 >> 综合 >> c.erase( it++ ); 分析
  详细解决方案

c.erase( it++ ); 分析

热度:33   发布时间:2023-12-06 05:13:18.0

//01 临时变量 iterator temp=it;
02 it++;
03 c.erase( temp );前缀++ return iterator&
后缀++ return iterator后缀++ 会比 前缀++ 多开一个临时变量 所以一般情况下 前缀++ 效率高于 后缀++

// ifm 担心风险还是存在 可使用注释取代上一行
// eg.
#include<bits/stdc++.h>
using namespace std;vector<int> v;
vector<int>::iterator it;int main()
{int x,i;while( ~scanf("%d",&x) && x ) v.push_back(x);for( it=v.begin()+1;it!=v.end(); ){if( *(it-1)==*(it) ) v.erase(it++),--it;// if( *(it-1)==*(it) ) it=v.erase(it);else ++it;}for( i=0;i<v.size();i++ ){if(i) printf(" ");printf("%d",v[i]);}return 0;
}