dev c++ 的一个问题。这个程序的错误
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> vec;
for(int i=0;i <100;i++)
vec.push_back(i+1);
int cnt=1;
vector <int> ::iterator itr=vec.begin();
while(vec.size()!=1)
{itr=vec.begin();
for(;itr!=vec.end();itr++,cnt++)
if(!(cnt%3))
{vec.erase(itr);cnt++;}
}
cout < <*itr;
system( "pause ");
}
编译的时候没有错误,但是运行的时候没有结果,然后调试的时候报错:程序出现访问违例(段异常) 这是怎么回事啊,然后我单步运行发现在while循环里面一切正常,但是while循环条件达到的时候就不会运行了
[解决办法]
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> vec;
for(int i=0;i <100;i++)
vec.push_back(i+1);
int cnt=1;
vector <int> ::iterator itr=vec.begin();
while(vec.size()!=1){
itr=vec.begin();
for(;itr!=vec.end();cnt++){
if(!(cnt%3))
{
itr = vec.erase(itr);
cnt++;
continue;
}
itr++;
}
}
cout < <*itr;
}
这样写就好了