c++ 的map问题!高手来啊!

来源:百度知道 编辑:UC知道 时间:2024/06/02 20:10:01
比如一个map<string,int> mapstudent;
mapstudent["语文"] = 90;
我知道可以用mapstudent.find("语文")找到 90。并返回迭代器
怎么才能通过90 找到"语文"?(如果"数学"也是90,就找到2个)

std::map能过key-value形式存储..
find能过key查找value..就像你说的可以用mapstudent.find("语文")找到 90
如果想通过value来查找key...
只能去遍历这个map.做value比较.如果相等,则返回key..
string strName;
map<stirng,int>::iterator iter = mapstudent.begin();
for( ; iter != mapstudent.end(); ++iter )
{
if( iter->second == 90 )
{
strName = iter->first;
break;
}
}
如果数学也等于90,那就只能根据程序中的逻辑.再做相应处理..