统计并输出所读入的单词出现的次数

简介: 题目:编写程序统计并输出所读入的单词出现的次数。 解答: 可以建立一个map对象,保存所读入的单词及其出现次数(以单词为键,对应的值为单词的出现次数)。 对于map容器,如果下标所表示的键在容器中不存在,则添加新元素,利用这一特性可编写程序如下: //通过建立map对象保存所读入的单词及...

题目:编写程序统计并输出所读入的单词出现的次数。

解答:

可以建立一个map对象,保存所读入的单词及其出现次数(以单词为键,对应的值为单词的出现次数)。

对于map容器,如果下标所表示的键在容器中不存在,则添加新元素,利用这一特性可编写程序如下:

//通过建立map对象保存所读入的单词及其出现次数,
//统计并输出所读入的单词出现的次数
#include<iostream>
#include<map>
#include<string>
using namespace std;

int main()
{
	map<string , int> wordCount;
	string word;

	//读入单词并统计其出现次数
	cout<<"Enter some words(Ctrl+Z to end):"
		<<endl;
	while(cin>>word)
		++wordCount[word];  //word的出现次数加1

	//输出结果
	cout<<"word\t\t"<<"times"<<endl;
	for(map<string , int>::iterator iter = wordCount.begin() ; iter != wordCount.end() ; ++iter)
		cout<<(*iter).first<<"\t\t"
		    <<(*iter).second<<endl;

	return 0;
}

 如要求使用insert函数代替下标运算,重写程序。

解答:

使用insert函数对map对象进行插入操作时,如果试图插入的元素所对应的键已经在容器中,则insert将不做任何操作。而且,带一个键-值pair形参的insert函数将返回一个pair对象,该对象包含一个迭代器和一个bool值,其中迭代器指向map中具有相应键的元素,而bool值则表示是否插入了该元素。

利用上述特点,可编写程序如下:

//通过建立map对象保存所读入的单词及其出现次数,
//统计并输出所读入的单词出现的次数。
//其中使用insert函数代替下标操作
#include<iostream>
#include<map>
#include<utility>
#include<string>
using namespace std;

int main()
{
	map<string , int> wordCount;
	string word;

	//读入单词并统计其出现次数
	cout<<"Enter some words(Ctrl+z to end):"
		<<endl;
	while(cin>>word)
	{
		//插入元素<word , 1>
		pair<map<string , int>::iterator , bool> ret = wordCount.insert(make_pair(word , 1));
		if(!ret.second) //该单词已在容器中存在
			++ret.first->second; //将该单词的出现次数加1
	}

	//输出结果
	cout<<"word\t\t"<<"times"<<endl;
	for(map<string , int>::iterator iter = wordCount.begin() ; iter != wordCount.end() ; ++iter)
		cout<<(*iter).first<<"\t\t"
		    <<(*iter).second<<endl;

	return 0;
}

 使用下标操作的程序更简洁,更容易编写和阅读,而insert函数的返回值的使用比较复杂。但是用insert函数可以避免使用下标操作所带来的副作用,即避免对新插入元素的不必要的值初始化,而且可以显示表示元素的插入(下标操作是隐式表示元素的插入),有其优点。

img_e00999465d1c2c1b02df587a3ec9c13d.jpg
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

目录
相关文章
|
2月前
|
算法 Java C++
统计单词数
统计单词数
43 0
|
2月前
|
存储 Python
判断一个字符串中出现次数最多的字符,统计这个次数?
判断一个字符串中出现次数最多的字符,统计这个次数?
44 0
|
8月前
|
JavaScript 前端开发
判断一个字符串中出现次数最多的字符,统计这个次数
判断一个字符串中出现次数最多的字符,统计这个次数
42 0
|
10月前
|
存储
判断一个字符串中出现次数最多的字符 统计这个次数
判断一个字符串中出现次数最多的字符 统计这个次数
|
C语言 C++
1684. 统计一致字符串的数目
给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串 。 请你返回 words 数组中 一致字符串 的数目。
78 0
037.统计文件的字符数
037.统计文件的字符数
79 0
统计字符串中各个字符出现的次数(六)
统计字符串中各个字符出现的次数(六)
170 0