社区
C++ 语言
帖子详情
关于map容器里的count操作
LAST_MAN
2011-11-15 08:36:31
map<string,int>word_count;
string word;
while(cin>>word)
++word_count[word];
以上这段代码是用来记录每个单词出现的次数,比如我输入了2次hello ,那么hello的值应该就是2.
但是书上又说如果这么写:m.count(k)是返回m中k出现的次数,k的值只能为1或0.
但是我hello的值明明是2,但是为什么书上又说只能出现1或0??
是不是我某些地方理解错了?
...全文
421
8
打赏
收藏
关于map容器里的count操作
mapword_count; string word; while(cin>>word) ++word_count[word]; 以上这段代码是用来记录每个单词出现的次数,比如我输入了2次hello ,那么hello的值应该就是2. 但是书上又说如果这么写:m.count(k)是返回m中k出现的次数,k的值只能为1或0. 但是我hello的值明明是2,但是为什么书上又说只能出现1或0?? 是不是我某些地方理解错了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
a707000646
2011-11-15
打赏
举报
回复
书本里面的意思是用count返回是否存在该值
这样是为了避免 如果说你想查test这个单词出现的次数
如果你直接判断word_count["test"]这样会直接在map中插入了test
但是实际上呢
我们如果没有输入test就不插入map,所以才用count,至于count
楼上的回答够详细了
这里是避免当"test"不存在时,判断的时候插入map
dic_008
2011-11-15
打赏
举报
回复
m.count(k)是返回m中k出现的次数,没错,但是要是用它来检测某键是否存在,若不存在返回0,存在那就是返回非0,他只不过把非0用1来代替证明这个键存在。 如果前面没有++word_count[word];之类的操作那么只会返回1。
dongfangmuge
2011-11-15
打赏
举报
回复
[Quote=引用 3 楼 last_man 的回复:]
引用 1 楼 taodm 的回复:
哪本书?先找找勘误表。
C++PRIMER
书上说,对于MAP对象,count成员的返回值只能是0或1.map容器只允许一个键对应一个实例
[/Quote]
count是计算该元素出现的次数,当然只能是0或者1了,因为map不允许存在同样key值的元素,如果需要某单词出现的次数,可以直接输出word_count[word]就行了;word_count[word]是value,而不是count函数的返回值。
LAST_MAN
2011-11-15
打赏
举报
回复
[Quote=引用 4 楼 last_man 的回复:]
引用 2 楼 dizuo 的回复:
只能是0或者1的是布尔变量。
word_count[word]非零可以当成是1,布尔中的真。
那如果我需要输出某单词出现的次数,那应该怎么办?
[/Quote]
用word_count->second可以输出出现的次数,但是用count就不能输出了?那erase函数返回的也是0或1,我想知道删除了元素个数,应该怎么办?
LAST_MAN
2011-11-15
打赏
举报
回复
[Quote=引用 2 楼 dizuo 的回复:]
只能是0或者1的是布尔变量。
word_count[word]非零可以当成是1,布尔中的真。
[/Quote]
那如果我需要输出某单词出现的次数,那应该怎么办?
LAST_MAN
2011-11-15
打赏
举报
回复
[Quote=引用 1 楼 taodm 的回复:]
哪本书?先找找勘误表。
[/Quote]
C++PRIMER
书上说,对于MAP对象,count成员的返回值只能是0或1.map容器只允许一个键对应一个实例
ryfdizuo
2011-11-15
打赏
举报
回复
只能是0或者1的是布尔变量。
word_count[word]非零可以当成是1,布尔中的真。
taodm
2011-11-15
打赏
举报
回复
哪本书?先找找勘误表。
Java核心基础编程精讲-
容器
从零开始学习Java核心基础编程精讲本章主要为大家介绍
容器
,让学员快速熟悉
容器
的基本概述,list,set,
map
,迭代器Iterator,泛型和collections工具类。课件在最后一节旁边下载,有什么问题可私信我,祝学习愉快
C++
map
中的
count
()方法
map
和set两种
容器
的底层结构都是红黑树,所以
容器
中不会出现相同的元素,因此
count
()的结果只能为0和1,可以以此来判断键值元素是否存在(当然也可以使用find()方法判断键值是否存在)。 拿
map
<key,value>举例,find()方法返回值是一个迭代器,成功返回迭代器指向要查找的元素,失败返回的迭代器指向end。
count
()方法返回值是一个整数,1表示有这个元素,0表示没有这个元素。 #include<iostream> #include<
map
> #in
STL常用
容器
——
map
容器
的使用
map
容器
是存储pair 类型键值对( pair 类模板创建的 pair 对象)的关联式
容器
。pair 键值对(pair):键值对中第一个元素为key(键),起查找作用,第二个元素为value(值)。使用
map
容器
存储的各个键值对,键的值既不能重复也不能被修改。在使用
map
容器
存储多个键值对时,默认情况下会自动根据各键值对的键的大小,对所有键值对做升序排序。
C++
map
count
()用法及代码示例
返回值:该函数返回键K在
Map
容器
中的出现次数。如果 key 存在于
容器
中,则返回1,因为映射仅包含唯一 key。如果键在
Map
容器
中不存在,则返回0。是C++ STL中的内置函数,如果在映射
容器
中存在带有键K的元素,则该函数返回1。如果
容器
中不存在键为K的元素,则返回0。参数:该函数接受强制性参数k,该参数指定要在
Map
容器
中搜索的键。
C++
map
容器
-58-
map
容器
大小/交换/插入/删除
接着学习
map
容器
的常见API
操作
,依然是大部分前面学习过的,名称相同的API的基本调用测试。本篇学习
map
容器
大小相关API,然后学习
容器
交换,
容器
元素插入和删除,清空等
操作
。 1.
map
容器
大小
操作
统计
map
容器
大小的函数原型 #include <iostream> #include <string> #include <
map
> using namespace std; void test01() { //
map
容器
的构造
map
C++ 语言
64,281
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章