c++新手问题,求高手解答
我们实验课要写一个程序,计算输入单词的个数及每一个词出现的次数
一开始我是这样写的
int main(){
string word;
vector<string> inword;
vector<string>::iterator iter1,iter2;
while(cin>>word)
inword.push_back(word);
typedef vector<string>::size_type vec_sz;
vec_sz size=inword.size();
cout << "单词个数: " << size << endl;
for(iter1=inword.begin();iter1!=inword.end();++iter1){
int count=1;
for(iter2=inword.begin()+1;iter2!=inword.end();){
if(*iter1==*iter2){
++count;
iter2=inword.erase(iter2);
}else
++iter2;
}
cout << *iter1 << "出现次数:" << count << endl;
}
return 0;
}
这样编译没有错误,运行时弹框提示vector iterators incompatible,后来我将第二层循环的初始化改成了iter2=iter1+1,结果就正确了,请问这个到底是怎么回事~~ C++
[解决办法]
int main(){
string word;
vector<string> inword;
vector<string>::iterator iter1,iter2;
while(cin>>word)
inword.push_back(word);
typedef vector<string>::size_type vec_sz;
vec_sz size=inword.size();
cout << "单词个数: " << size << endl;
for(iter1=inword.begin();iter1!=inword.end();++iter1){
int count=1;
for(iter2=inword.begin()+1;iter2!=inword.end();){
if(*iter1==*iter2){
++count;
iter2=inword.erase(iter2);
}else
++iter2;
}
cout << *iter1 << "出现次数:" << count << endl;
}
return 0;
}