c++ 向map添加元素 pair返回问题

#include"stdafx.h"#include<iostream>#include<vector>#include<string>#include<map>usin... #include "stdafx.h"
#include <iostream>
#include<vector>
#include<string>
#include<map>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
map<string, int>mp;
string word;
while (cin>>word)
{
auto ret = mp.insert({ word, 1 }); //将元素插入map容器
if (!ret.second)
++ret.first->second; //写成ret.second我测试也可以,可是primer为什么这样写
}
for (const auto &c : mp)
cout << c.first << " "<<c.second;
system("pause");
return 0;
}
//请大神再请解释一下ret.first不是第一个pair成员吗?对它解引用得到什么?还是我理解有误
我刚发现我测试的不对。。。。 求告知错在哪里
展开
 我来答
物理公司的
2015-05-25 · TA获得超过5695个赞
知道大有可为答主
回答量:6105
采纳率:86%
帮助的人:1312万
展开全部
insert返回一个pair
即ret是一个pair,
他的first是迭代器,他的位置是给定关键字元素的位置,
second是bool值 ret.second你加的是bool,应该不行的。
你的测试时怎么成功的,应该不行啊。
输入1 2 1 2 1
现在的map是 (1, 3)(2, 2)

输入2
ret返回pair(2的迭代器,bool)
ret.first(2的迭代器)->second(value++);

(1,3)(2,3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式