从列表C ++中删除对象

时间:2019-12-29 16:47:46

标签: c++ list

有很多这样的问题,但是我尝试了其中的大多数,但是我没有成功。作为我的最后一次尝试,我没有出现任何错误,但是该功能不起作用

这是我最后要做的事情,我需要从列表中删除特定对象

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;
}
};

1 个答案:

答案 0 :(得分:2)

如果在迭代过程中更改列表,则迭代器无效。

请参见https://stackoverflow.com/a/10360466/5107799https://stackoverflow.com/a/1016332/5107799