我的地图和循环在这里有问题。所以基本上我的地图是:地图和For循环
typedef map <int,string> studentRecord;
studentRecord sRecord;
,我把钥匙和元素中一个for循环:
for(int i = 0; i < sizephys; i++){
phys.push_back(new physics());
cout << "\nPlease enter student name:"<<endl;
getline(cin , namephys);
cout << "Please enter student id:"<<endl;
cin >> idphys;
cin.ignore();
phys[i]->setNameId(namephys, idphys);
phys[i]->addCourse(course, mark);
sRecord[idphys] = namephys;
}
现在的问题是,我想用地图来搜索循环结束,即等之后这个:
int recordSearch;
cout << "\nPlease enter ID key of student to search their record." <<endl;
cin >> recordSearch;
searchDatabase(sRecord,recordSearch);
if (recordSearch == idphys)
{
phys[i]->printCourseInfo();
}
它显然不会工作,因为phys [i]在循环之外。有没有其他方法可以做到这一点?谢谢
void searchDatabase(studentRecord &sRecord, int recordSearch)
{
studentRecord::iterator studRecordIter;
studRecordIter = sRecord.find(recordSearch);
if(studRecordIter != sRecord.end())
cout<<"\nFound record for student " <<
recordSearch << " = "<<
studRecordIter->second<<endl;
else
cout<<"Sorry, record " << recordSearch <<
" is not in database"<<endl;
}
你知道'map'有一个称为'find'功能,对不对?这是地图的一个点。 –
你可以显示'searchDatabase'吗? –
@ChrisDrewvoid 用它编辑。 – Cubed