C++ Map 问题 详情见补充,谢谢

我想查找一个map里指定Value对应的Key值,请问应该怎样用什么函数?... 我想查找一个map里指定 Value 对应的 Key 值,请问应该怎样用什么函数? 展开
 我来答
IT孤鹜
推荐于2016-05-05 · TA获得超过4197个赞
知道大有可为答主
回答量:3960
采纳率:71%
帮助的人:3567万
展开全部
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
void main()
{
    map<int,int> m;
    m[1]=4;
    m[2]=5;
    m[3]=6;
    int value = 6;
    map<int,int>::iterator it=m.begin();
    for(;it!=m.end();++it)
        if(it->second==value)
           cout<<it->first<<endl;
        
}
追问
只能这样吗?数据特别大时 这map不就直接变成数组了嘛O__O"…
追答
map存储的元素不是连续的,vector 可以用find函数,所以只能遍历了
porker2008
2014-06-01 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
STL里面的map不支持Value到Key的查找
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6c954cb
2014-06-01 · TA获得超过298个赞
知道小有建树答主
回答量:478
采纳率:100%
帮助的人:522万
展开全部
#include <string>
#include <iostream>
#include <map>
#include <vector>
using namespace std;

int main()
{
map <int,string> m;//multimap的创建
m.insert(pair<int,string>(4,"a"));//插入
m.insert(pair<int,string>(8,"b"));
m.insert(pair<int,string>(1,"gg"));
m.insert(pair<int,string>(5,"d"));
m.insert(pair<int,string>(2,"gg"));
vector<int> keys;//目标keys
map <int,string>::iterator p;
for(p=m.begin();p!=m.end();++p)
if(p->second=="gg")
keys.push_back(p->first);
vector<int>::iterator vp;
for(vp=keys.begin();vp!=keys.end();++vp)
cout<<*vp<<endl;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式