从向量访问成员功能

Accessing member functions from a vector

本文关键字:功能 成员 访问 向量      更新时间:2023-10-16

我在使用向量方面有一个小问题。我有一个矢量,该向量存储由员工课程创建的员工对象。

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

现在,在对象更改后,我不知道如何将更改的对象保存到向量中。例如,我可以为员工对象设置passpassword(),直到密码更改密码该对象在内存中。但是,一旦将其从向量销毁并再次加载,密码就会重置为矢量中的先前值。

  • 我可以在矢量中修改员工对象吗?
  • 如果是这样,如何在向量中搜索员工对象?(要搜索我遇到了vector ::查找方法,但是我不确定如何在对象上使用它。

而不是使用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