while(begin != end )
words[*begin++]++;
这个是利利用了流迭代器来从标准输入中读取字符串,在你代码里是是string类型的所以读取string,也就是空格字符隔开的字符串
words是个map,其中的*begin++就是读取并返回输入,如果这个字符串在容器里没有的话,words[*begin++]把这个字符串存在容器里,外面的++把它对应的计数增加为1,如果这个单词已经存在的话就只接执行后面的++了,增加它的计数
后面就输出这段话中出现的单词和它们出现的次数
map在STL中以一个映射表,与其它数据结构明显不同的是map可以用自己制定的数据类型来作为[]中的下表,就像使用数组时查找第一个元素用a[0]那么简单,但是map中的数据形式是pair类型,也就是一对一对儿的,像map[index]++,如果index事实上还不存在(在这里也就是单词之前还没有遇到过),但是一旦你指定了这个index,他就会自动给你创建一个键值对,其中的值如果为int的话,就初始化为0,而你使它自增,也就使之变成1.C++ STL入门时可以读《Accelerated C++》,掌握之后可以再读 《C++ STL》,基本上就算STL的半专家了
哇 你们好专业 我基本没明白过来- -......