从向量中删除对象

She*_*n.W 1 c++ vector object

我将对象存储在向量中,其中每个对象都有一个人员编号属性.如果用户想要从向量中删除对象,则用户可以输入人员编号,以便从向量中删除特定对象.

void Administrator::deleteMember()
{
    string staffNumber;
    FileHandler<Administrator> adminTObj;
    cout<<"Enter Staff Number of the Member to Delete"<<endl;
    cin>>staffNumber;

    if(staffNumber.find("Ad"))
    {
        vector<Administrator> myVec=adminTObj.getVectorAdministrator();
        for(Administrator iter:myVec)
        {
            if(iter.getStaffNumber()==staffNumber)  //checks if the staff number matches an object's staff number 
            {
                // If it matches it should delete the record (Need to implement)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何从向量中删除对象?

jua*_*nza 6

如果您有一个元素,则可以使用它std::find_if来获取元素的迭代器,并将std::vector::erase其删除.

auto it = std::find_if(myVec.begin(), 
                       myVec.end(),
                       [staffNumber](const Administrator& a)
                       { return a.getStaffNumber() == staffNumber; });

myVec.erase(it);
Run Code Online (Sandbox Code Playgroud)

如果要删除满足条件的所有元素,请使用std::remove_ifstd::vector::erase(擦除 - 删除习语).

auto it = std::remove_if(myVec.begin(), 
                         myVec.end(),
                         [staffNumber](const Administrator& a)
                         { return a.getStaffNumber() == staffNumber; });

myVec.erase(it, myVec.end());
Run Code Online (Sandbox Code Playgroud)