我有个c++问题想请教各位高手

来源:百度知道 编辑:UC知道 时间:2024/06/02 23:27:38
8.编写一个程序从键盘读入一系列单词(字符串),计算输入的每个不同的单词所出现的次数并输出结果。
我想这样做
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int r=0;
int t=0;
string v;
vector<string> k;
cout<<"请输入一连串的字符串"<<endl;
for(int l=0;l<5;l++)
{
cin>>v;
k.push_back (v);
}
sort(k.begin(),k.end());
vector<string>::size_type m;
for(m=0; m<k.size();m++)
{
while(t<5)
{ if(k[t]==k[m])
{r+=1;}
else
{cout<<k[t]<<r<<endl;}
t+=r+1;
}

}

}
但是不行,不能计算出相同字符串的个数

楼主的算法是从哪里看到的,还是自己想的?希望能够交流一下。
把你的程序稍稍改动一下就ok了:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int r=0;
int t=0;
string v;
vector<string> k;
cout<<"请输入一连串的字符串"<<endl;
while (cin>>v/*, !cin.eof()*/)
{
k.push_back (v);
}

sort(k.begin(),k.end());

vector<string>::difference_type diff = 0;
vector<string>::const_iterator it = k.begin();
while (it != k.end())
{
diff = 1;
while (it+diff != k.end())
{
if (*it == *(it+diff))
{
++diff;
}
else
{
break;
}
}
cout<<*it<<"\tcount\t"<<diff<<endl;
it += diff;

}
}
测试结果:
请输入一连串的字符串
aa bb cc dd
aa aa aa
^Z
<