关于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 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
哪本书?先找找勘误表。

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧