哈希表代码输入不对
void hash_table::insert(User u) {
int name_num = hash(u.getName());
if (sexValid(u.getSex()) == false) {
cout << "性别信息无效!" << endl;
return;
}
if (numValid(u.getNum()) == false || numValid(u.getTel()) == false) {
cout << "数字信息无效!" << endl;
return;
}
vector<User>::iterator it;
for (it = vec[name_num].begin(); it != vec[name_num].end(); it++)
if (it->getName() == u.getName()) {
cout << "插入失败!" << endl;
return;
};
vec[name_num].push_back(u);
if (initial == false) cout << "插入成功" << endl;
}
void hash_table::retrieve(string name) {
int len = vec[hash(name)].size();
int i, count;
count = 0;
for (i = 0; i < len; i++) {
count++;
if (vec[hash(name)][i].getName() == name && vec[hash(name)][i].getValid()){
cout << vec[hash(name)][i].getName() << ' ' << vec[hash(name)][i].getSex() << ' '
<< vec[hash(name)][i].getNum() << ' ' << vec[hash(name)][i].getTel() << endl;
cout << "查找成功" << endl;
cout << "比较时间: " << count << endl;
return;
}
}
if (i == len) cout << "查找失败" << endl;
}
// 删除操作
void hash_table::del(string name) {
int len = vec[hash(name)].size();
int i;
for (i = 0; i < len; i++)
if (vec[hash(name)][i].getName() == name && vec[hash(name)][i].getValid()){
vec[hash(name)][i].setValid(false);
cout << "删除成功" << endl;
return;
}
if (i == len) cout << "删除失败!" << endl;
}
hash那个字母所在的地方老是报错,这是为什么