我的地圖和循環在這裏有問題。所以基本上我的地圖是:地圖和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