c++ - 从 C++ 列表中删除对象

标签 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();
}

hospitalList的声明

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, Age, Ward_Number;

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

最佳答案

如果您在迭代期间更改列表,您的迭代器将失效。

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

关于c++ - 从 C++ 列表中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59521350/

相关文章:

c++ - cpp 的未知编译器标志/参数

c++ - 使用友元函数重载新运算符

c++ - 为什么我要for(auto&it:myUnorderedMap){…= std::move(it.second)}时会得到const引用?

python - 列表与列表列表的第一个元素之间的交集

c++ - Visual C++ - 内存泄漏检测

c++ - 将一个 vector 复制到其他 C++ 时出错

string - Racket 中列表到字符串的转换

linux - 如何列出特定环境变量的文件?

jquery - 悬停不适用于列表中的项目

c# - 访问 Sharepoint 2013/office365 列表时出现 "DTD is prohibited"错误(但未公开意识到使用 XML)