/* PE7.1--字数统计程序(排序)
* 扩展第7.2节中的程序,使得它的输出按照出现次数来排序,
* 也就是说,输出应该把所有出现一次的单词组合起来,然后
* 是说有出现两次的单词等
* 时间:2013-1-6 15:51:25
*/
#include <iostream>
#include <map>
#include <vector>
#include <string>
using namespace std;
int main()
{
string s;
map<string, int> counters; // 存储每一个单词和关联的计数器
cout << "输入一行单词" << endl;
// 读取输入,跟踪每个单词出现次数
while (cin >> s)
{
++counters[s];
}
map<int, vector<string> > counters1;
for (map<string, int>::const_iterator it = counters.begin();
it != counters.end(); ++it)
{ // map键-值互换位置
counters1[it->second].push_back(it->first);
}
cout << "输出单词及出现的次数:" << endl;
// 读出单词及出现次数
for (map<int, vector<string> >::const_iterator it = counters1.begin();
it != counters1.end(); ++it)
{
vector<string> vec_str = it->second;
for (vector<string>::const_iterator vec_it = vec_str.begin();
vec_it != vec_str.end(); ++vec_it)
{
cout << *vec_it << "\t" << it->first << endl;
}
}
return 0;
}
map按值排序
最新推荐文章于 2024-05-30 08:34:38 发布