c++ map中,想要返回key 和 value 的值必须用迭代器吗?

map<string,int>m;之后直接写m.first或者m.second都过不了编译但是发现以前用过定义迭代器it之后it->first或者*(it.first)是... map<string, int> m;
之后直接写 m.first 或者 m.second 都过不了编译

但是发现 以前用过定义迭代器it之后
it->first 或者 *(it.first) 是可以的
所以是想要得到 key 和 value 的值必须用迭代器吗?有没有方法可以直接提取?
O(∩_∩)O谢谢
展开
 我来答
泷皖莲6
2016-05-11 · TA获得超过622个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:308万
展开全部

你好,map一般不会同时需要first和second,一般只是需要返回second(也就是value)的值。

如果是C++ 11标准的编译器,可以使用at来获取first的引用,例如

map<string,int> m;
m.insert(pair<string,int>("A", 1));
std::cout<<m.at("A")<<endl;    //输出1

如果是C++11之前的编译器,有一个find的方法同样可以获取你想找的key的对应的value(second)的值:

std::cout<<m.find("A")->second<<endl;

谢谢,望采纳

因缺斯汀day
2021-03-25
知道答主
回答量:6
采纳率:0%
帮助的人:3528
展开全部
如果想同时返回key和value确实只能用迭代器。直接用m.first和m.second肯定编译不过,因为first和second是pair的成员,而不是map的成员,你应该先得到一个map的迭代器,然后再使用iter->first和iter->second来访问key和value。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式