STL程序段求解释

2025-04-23 17:42:33
推荐回答(3个)
回答1:

while(begin != end )
words[*begin++]++;

这个是利利用了流迭代器来从标准输入中读取字符串,在你代码里是是string类型的所以读取string,也就是空格字符隔开的字符串

words是个map,其中的*begin++就是读取并返回输入,如果这个字符串在容器里没有的话,words[*begin++]把这个字符串存在容器里,外面的++把它对应的计数增加为1,如果这个单词已经存在的话就只接执行后面的++了,增加它的计数

后面就输出这段话中出现的单词和它们出现的次数

回答2:

map在STL中以一个映射表,与其它数据结构明显不同的是map可以用自己制定的数据类型来作为[]中的下表,就像使用数组时查找第一个元素用a[0]那么简单,但是map中的数据形式是pair类型,也就是一对一对儿的,像map[index]++,如果index事实上还不存在(在这里也就是单词之前还没有遇到过),但是一旦你指定了这个index,他就会自动给你创建一个键值对,其中的值如果为int的话,就初始化为0,而你使它自增,也就使之变成1.C++ STL入门时可以读《Accelerated C++》,掌握之后可以再读 《C++ STL》,基本上就算STL的半专家了

回答3:

哇 你们好专业 我基本没明白过来- -......