首先,应该查找键。你写把学号作为键,却查找的是姓名值,就浪费了这个数据结构的效率。应该 姓名-学号对应,查姓名,直接出学号。。#include #include using namespace std;int main(){ char ch[10]; map m; m.insert(pair("张三",1)); m.insert(pair("李四",2)); m.insert(pair("king",3)); cout<<"search:"; cin>>ch; map::iterator iter;//定义个迭代器 iter=m.find(ch); //这种方法是按学号查找 if(iter!=m.end()) cout<second<<"的学号是:"<first< else cout<<"no "< if(m.count(ch)) //这种方法是按姓名查找,问题就在这 // 提示错误 cout< return 0; return 0;}
map是看成一种的键值对,你可以用一个迭代器对这个map进行遍历,对每个 map 的value(也就是iter->second)与你输入的姓名比较,如果相同输出学号(iter->first)。你错误的原因是 map 中的 count方法参数是 它的 key, 而你传的实际上是 value,类型不对,而且这个方法是计算与key相同的数量