从向量访问成员函数

时间:2014-01-19 13:30:13

标签: c++ vector

我在使用矢量时遇到了一些问题。 我有一个存储由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 那个对象在记忆中。但是,只要它从矢量中被销毁并再次加载,密码就会重置为矢量中的前一个值。

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

1 个答案:

答案 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