【发布时间】:2017-10-24 13:59:05
【问题描述】:
我有一个循环在我的向量中搜索员工的问题,使用自动,由于某种原因我得到向量迭代器不兼容,这里是函数:
Employee * searchEmp(int id,Company * comp)
{
for(auto i = comp->getEmployees().begin(); i < comp->getEmployees().end(); ++i)
if((*i)->getID()==id)
return (*i);
return NULL;
}
它总是因 ++i 部分的错误而崩溃。
几点说明:
每个员工都有一个 id。
列表中肯定有 1 项(getEmployees)。
循环应该遍历所有向量并找到一个 id 等于我正在寻找的 id 的员工。
公司标题:
#include "Manager.h"
class Company
{
public:
Company();
Company(string name,string adress,Manager * ceo);
void companyInfo();
Manager * ceo;
vector<Employee *> getEmployees();
void addEmployee(Employee * worker);
private:
string name;
string adress;
vector<Employee *> employees;
};
【问题讨论】:
-
不相关:但在您的 for 条件下,您可能希望使用
i != comp->getEmployees().end()(注意!=)而不是i < comp->getEmployees().end() -
您应该使用smart pointers 而不是所有那些原始指针。
-
请发布您遇到的确切错误。
-
您似乎使用了很多拥有指针。除了@user0042 的建议之外,问问自己,动态分配是否真的是每种情况下的最佳解决方案。值语义有很多好处。
标签: c++ algorithm search vector runtime-error