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

简介: 题目:编写程序统计并输出所读入的单词出现的次数。 解答: 可以建立一个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
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

相关文章
|
3月前
|
机器学习/深度学习 存储 人工智能
2026年阿里云服务器活动价格:轻量、经济型、通用算力型、计算型等热门实例活动价格参考
2026年阿里云推出多档位高性价比云服务器特惠活动,覆盖轻量应用、经济型e、通用算力型u1/u2i等全系列规格。新用户可抢轻量应用服务器2核2G仅38元/年,2核4G低至9.9元/月;新老用户同享2核2G 3M带宽经济型e实例99元/年、2核4G 5M带宽通用算力型u1实例199元/年,且续费同价。同时提供从2核2G到24核64G的经济型、通用算力型全规格报价参考,适配个人博客、企业官网、数据分析等不同场景,帮助用户按需选择高性价比算力方案。
|
4月前
|
消息中间件 SQL 监控
阿里云物联网平台配置保姆级教程:从零开始打造你的IoT设备上云之旅
本文提供一份完整的阿里云物联网平台配置保姆级教程,涵盖从账号注册、开通服务、创建实例、定义产品与物模型、添加设备、获取证书,到设备端SDK集成、MQTT连接、数据上报、规则引擎配置、服务端订阅、OTA固件升级以及监控运维的全流程。文章详细解析了公共实例与企业版实例的选型建议、一机一密与一型一密的认证机制、物模型属性服务事件三维度设计、自定义Topic与系统Topic的区别、云产品流转的SQL解析器编写、AMQP服务端订阅的Node.js实现,并提供了C Link SDK和ESP32 Arduino两种设备端接入的代码示例。通过本文,读者可以系统掌握阿里云物联网平台的核心配置方法,快速实现设备安
|
3月前
|
人工智能 负载均衡 数据可视化
保姆级教程:在阿里云百炼AI模型平台调用DeepSeek-V4-Pro(免费100万Tokens)
本文介绍如何通过阿里云百炼平台调用DeepSeek-V4开源模型。用户开通百炼后可获免费Token,创建API Key,再用Chatbox图形化客户端一键配置调用deepseek-v4-pro,无需命令行操作,享受高稳定、自动扩缩容的标准化AI服务。在阿里云百炼官网:https://t.aliyun.com/U/fPVHqY 免费领取千万Tokens
|
4月前
|
人工智能 运维 API
AI智能体的开发费用
AI智能体开发费用从免费到百万元不等,取决于复杂度、开发模式(低代码/定制/深度私有化)及业务集成深度。成本分一次性开发费与持续云资源/运维费。建议企业先用低代码平台做MVP验证ROI,再逐步投入。
|
4月前
|
人工智能 缓存 运维
AI智能体配套GLM 5.2:vLLM/SGLang部署适配Hermes/OpenClaw实战
GLM 5.2是智谱推出的开源混合专家大模型,拥有7440亿总参数、400亿激活参数,原生支持100万tokens超长上下文,在长文档分析、复杂代码生成、多步骤AI智能体任务上表现突出,MIT开源协议允许企业完全私有化部署,数据无需外流,满足隐私合规需求。但超大模型对GPU硬件要求极高,需要根据业务并发、上下文长度选择BF16、FP8、Q4_K_M、UD-IQ2四类量化权重,并搭配vLLM、SGLang两类主流推理框架搭建服务。本文从量化硬件匹配、两套推理框架完整部署实操、自托管与线上API成本测算、AI智能体后端适配、常见故障排查五大维度完整讲解落地流程,同时结合Hermes、OpenCla
587 0
|
4月前
|
缓存 小程序 NoSQL
PHP商城小程序源码ThinkPHP+UniApp高性能电商系统全开源部署
本项目基于ThinkPHP 6(PHP后端)与UniApp(跨端前端),打造全开源高性能电商系统。支持微信小程序、H5、App多端统一,集成Redis缓存、MySQL事务防超卖、RESTful API及完整部署方案,兼顾开发效率与生产性能。
490 0
|
10月前
|
人工智能 图形学
2025年度数字人公司排名推荐:厂商技术实力、优势、定位全方位对比
现在的AI虚拟技术发展越来越普遍,涉足数字人相关内容的公司层出不穷,但质量上参差不齐。对于企业而言,若需专门对接服务商制作数字人视频,技术过硬、经验丰富的公司才是可靠之选——这类公司能精准匹配企业场景需求,输出高质量数字人内容。接下来,为您盘点2025年值得关注的优秀数字人公司。
|
机器学习/深度学习 人工智能 编解码
AI-Compass LLM合集-多模态模块:30+前沿大模型技术生态,涵盖GPT-4V、Gemini Vision等国际领先与通义千问VL等国产优秀模型
AI-Compass LLM合集-多模态模块:30+前沿大模型技术生态,涵盖GPT-4V、Gemini Vision等国际领先与通义千问VL等国产优秀模型
AI-Compass LLM合集-多模态模块:30+前沿大模型技术生态,涵盖GPT-4V、Gemini Vision等国际领先与通义千问VL等国产优秀模型
|
人工智能 运维 监控
HarmonyOS NEXT~鸿蒙系统运维:全面解析与最佳实践
本书《HarmonyOS NEXT~鸿蒙系统运维:全面解析与最佳实践》深入探讨了鸿蒙系统的运维管理。从架构特点到实际操作,涵盖分布式能力、性能优化、安全维护及故障排查。内容包括设备管理、系统监控、安全管理等核心任务,提供常见问题解决方案与工具推荐。面对未来超级终端和AI赋能的挑战,运维人员需不断学习,以充分发挥鸿蒙的分布式优势,为用户带来流畅体验。
1038 8