C++map容器问题

用map容器做单词计数工具,图中的->second是怎么回事?(c++primer中关联容器map的例子)... 用map容器做单词计数工具,

图中的->second是怎么回事?
(c++primer中关联容器map的例子)
展开
 我来答
YaNaKaSa
2015-11-04 · TA获得超过114个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:83.8万
展开全部
在STL帮助文档上有如下map::insert重载版本:
pair<iterator,bool> insert ( const value_type& x );
iterator insert ( iterator position, const value_type& x );
template <class InputIterator>
void insert ( InputIterator first, InputIterator last );

你的insert是和第一个版本的参数匹配。参看其中给出的返回值说明:
The first version returns a pair, with its member
pair::first set to an iterator pointing to either the newly inserted
element or to the element that already had its same value in the map. The pair::second element in the pair is set to true if a new element was
inserted or false if an element with the same value existed.
大意是:
返回的pair的first被设置成指向你所插入元素或map中已有的同值(指的是键)元素的迭代器。如果插入元素second成员被设置成true,否则为false.
所以你的代码中返judge的first实际上是指向你插入元素的迭代器。由于map要求键的唯一性,所以只有第一次插入成功,后面的都说是插入失败,返回map中键为word的那个元素的迭代器。也就是judge的第二个参数在后续插入中都为false,所以会进行累加。最后,使用operator[]获取键对应的值是累加两次的值!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式