我将对象存储在向量中,其中每个对象都有一个人员编号属性.如果用户想要从向量中删除对象,则用户可以输入人员编号,以便从向量中删除特定对象.
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)
如何从向量中删除对象?
如果您有一个元素,则可以使用它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_if和std::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)