有很多这样的问题,但是我尝试了其中的大多数,但是我没有成功。作为我的最后一次尝试,我没有出现任何错误,但是该功能不起作用
这是我最后要做的事情,我需要从列表中删除特定对象
void discharge_patients() {
string str;
cout << "Enter Patients Name : " << endl;
cin >> str;
for (hospital const& common : hospitalList) {
if(common.getPatientName() == str){
cout << "\nPatient Name : " << common.getPatientName() << "\t";
hospitalList.remove(common);
break;
}
}
iputData();
}
医院名单的声明
list<hospital> hospitalList;
这就是我将对象添加到hospitalList
void admit_patient() {
hospital obj;
string str;
int val;
cout << "Enter Patients Name : " << endl;
cin >> str;
obj.setPatientName(str);
cout << "Enter Bed Number : " << endl;
cin >> val;
obj.setBedNum(val);
cout << "Enter Date of Admit 'dd/mm/yyyy' : " << endl;
cin >> str;
obj.setDateOfAdmit(str);
cout << "Enter Patient Age :" << endl;
cin >> val;
obj.setAge(val);
cout << "Enter Patient Ward No :" << endl;
cin >> val;
obj.setWardNumber(val);
//push the object to hospitalList
hospitalList.push_back(obj);
iputData();
}
这就是我的hospital
类的样子
class hospital {
公开: 字符串Patient_Name,Date_of_Admit; int Bed_Num,年龄,病房号;
int getAge() const {
return Age;
}
void setAge(int age) {
Age = age;
}
int getBedNum() const {
return Bed_Num;
}
void setBedNum(int bedNum) {
Bed_Num = bedNum;
}
const string& getPatientName() const {
return Patient_Name;
}
void setPatientName(const string& patientName) {
Patient_Name = patientName;
}
int getWardNumber() const {
return Ward_Number;
}
void setWardNumber(int wardNumber) {
Ward_Number = wardNumber;
}
const string& getDateOfAdmit() const {
return Date_of_Admit;
}
void setDateOfAdmit(const string& dateOfAdmit) {
Date_of_Admit = dateOfAdmit;
}
};
答案 0 :(得分:2)
如果在迭代过程中更改列表,则迭代器无效。
请参见https://stackoverflow.com/a/10360466/5107799或https://stackoverflow.com/a/1016332/5107799