我在使用矢量时遇到了一些问题。 我有一个存储由Staff类创建的Staff对象的向量。
vector <Staff> staffList;
vector <Staff>::iterator sit;
我已在此向量中添加了几个人员对象。 我的员工班有类似的方法:
Staff getStaffAccount(string);
int getAccessLevel();
string getUserName();
int getStaffID();
string getPassword();
void setStaffIDNumber(int const);
void setUsername(string);
void setPassword(string);
void setAccessLevel(int);
static void changePassword(Staff*);
当我需要修改人员对象时,我所做的是获取人员对象并对其进行修改。这就是我得到员工对象的方式:
Staff* Staff::searchByID(int staffID){
const int vectorSize = staffList.size();
for (int i=0; i<vectorSize; ++i){
if (staffList[i].getStaffID() == staffID){
return &staffList[i];
break;
}
}
return NULL;
}
现在我对对象进行了更改后,我不知道如何将更改的对象保存到向量中。例如,我可以为staff对象设置setPassword(),密码更改为long 那个对象在记忆中。但是,只要它从矢量中被销毁并再次加载,密码就会重置为矢量中的前一个值。
答案 0 :(得分:1)
您可以使用
代替使用for循环Staff* Staff::searchByID(int staffID){
auto i = std::find_if(staffList.begin(), staffList.end(); [staffID](Staff &s) {
return s.getStaffID() == staffID;
});
if(i != staffList.end()) return &(*i);
return NULL;
}
对实际问题。因为您使用的是指针,原件应该会改变。
编辑:这是测试代码:http://ideone.com/HQV6Md