最近在用set,之前我记得有同事跟我提起,如果erase了,一定是要把返回值赋值给迭代器,后来实际写代码,发现并不需要,一旦把返回值赋值给迭代器,编译会报错,猜测可能是11版本是不需要赋值的,不过我也没有去追究具体原因,下面上实际代码
盲点1主要是:
1.vector中的值赋值给set,用来去重
2.set中erase的使用
#include<iostream>
#include<set>
#include<vector>
using namespace std ;
int main()
{
vector<int> vectest ;
vectest.push_back(0) ;
vectest.push_back(1) ;
vectest.push_back(2) ;
vectest.push_back(1) ;
set<int> setTest(vectest.begin() , vectest.end()) ;
set<int>::iterator iter = setTest.begin() ;
while(iter != setTest.end())
{
cout <<*iter<<endl ;
++iter ;
}
for( iter = setTest.begin() ; iter != setTest.end() ; ++iter)
{
if( *iter == 0 )
setTest.erase(iter) ;
}
cout << "after" <<endl ;
for( iter = setTest.begin() ; iter != setTest.end() ; ++iter)
{
cout <<*iter<<endl ;
}
return 0 ;
}
盲点2: