社区
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??
是不是我某些地方理解错了?
...全文
520
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
打赏
举报
回复
哪本书?先找找勘误表。
C++
map
中的
count
()方法
map
和set两种
容器
的底层结构都是红黑树,所以
容器
中不会出现相同的元素,因此
count
()的结果只能为0和1,可以以此来判断键值元素是否存在(当然也可以使用find()方法判断键值是否存在)。 拿
map
<key,value>举例,find()方法返回值是一个迭代器,成功返回迭代器指向要查找的元素,失败返回的迭代器指向end。
count
()方法返回值是一个整数,1表示有这个元素,0表示没有这个元素。 #include<iostream> #include<
map
> #in
C++ 学习之
Map
容器
在上面的示例中,展示了如何使用find函数在
Map
容器
中查找特定键对应的值,并输出该值。示例中,展示了如何使用insert函数和下标运算符向
Map
容器
中插入元素,以及如何使用erase函数删除指定键的元素。在C++的
Map
容器
中,元素是按照键的升序排列的。在C++中,
Map
容器
提供了几个与大小和交换相关的成员函数,可以帮助你获取
容器
的大小以及交换两个
容器
的内容。以上代码展示了如何获取
Map
容器
的大小、判断
容器
是否为空以及交换两个
Map
容器
的内容。
Map
中的键是唯一的,而值可以重复。
Map
容器
中几种常用的基本
操作
目录
Map
容器
的基本
操作
Map
是什么? 自定义数据类型作为”键”并且进行自定义排序 根据上面的例子说明“如何进行自定义排序”? 无论是哪种
容器
,自定义数据类型应该注意什么?
Map
容器
的初始化
Map
容器
中元素的插入 Multi
map
容器
中首个不重复的“键”查找
Map
和multi
map
容器
中compare函数句柄的使用
Map
容器
的最大容量(
map
容器
最多可以装多少元素)
map
容器
中元素的删除
操作
Map
容器
中的find函数 Multi
map
中查找有多少个重复值的
count
C++
map
count
()用法及代码示例
返回值:该函数返回键K在
Map
容器
中的出现次数。如果 key 存在于
容器
中,则返回1,因为映射仅包含唯一 key。如果键在
Map
容器
中不存在,则返回0。是C++ STL中的内置函数,如果在映射
容器
中存在带有键K的元素,则该函数返回1。如果
容器
中不存在键为K的元素,则返回0。参数:该函数接受强制性参数k,该参数指定要在
Map
容器
中搜索的键。
STL常用
容器
——
map
容器
的使用
map
容器
是存储pair 类型键值对( pair 类模板创建的 pair 对象)的关联式
容器
。pair 键值对(pair):键值对中第一个元素为key(键),起查找作用,第二个元素为value(值)。使用
map
容器
存储的各个键值对,键的值既不能重复也不能被修改。在使用
map
容器
存储多个键值对时,默认情况下会自动根据各键值对的键的大小,对所有键值对做升序排序。
C++ 语言
65,208
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章