我创建了一个Employee类:
class Employee {
private:
int idNumber;
string name, department, position;
public:
Employee() {
idNumber = 0;
name = department = position = "";
}
Employee(string n, int idn) {
name = n;
idNumber = idn;
department = position = "";
}
Employee(string n, int idn, string dep, string pos) {
name = n;
idNumber = idn;
department = dep;
position = pos;
}
void setName(string n) {
name = n;
}
void setidNumber(int idn) {
idNumber = idn;
}
void setDepartment(string dep) {
department = dep;
}
void setPosition(string pos) {
position = pos;
}
string getName() {
return name;
}
int getidNumber() {
return idNumber;
}
string getDepartment() {
return department;
}
string getPosition() {
return position;
}
};
现在,我创建了一个类型为Employee的指针的二维数组:
int n=2;
Employee **p = new Employee * [n];
for (int i=0; i < n; i++)
p[i] = new Employee;
我成功存储了两条记录,如下所示:
Name ID Number Department Position
FS 30 CS BS
AT 27 CS BS
我有这段代码来删除员工的记录:
string del_name;
int flag = 0;
cin.ignore();
cout << "Enter name: ";
getline(cin, del_name);
for (int i=0; i < n; i++) {
while (del_name == p[i]->getName() && i < n) {
if (del_name == p[i]->getName()) {
delete p[i];
p[i] = NULL;
--k;
++flag;
cout << "Record deleted." << endl;
break;
}
else
{
flag = 0;
}
}
}
if (flag == 0)
cout << "No record found having name " << del_name << "." << endl;
如果多次找到记录。即使所有记录都被删除,它也会成功删除。
此外,还有其他优化方法可以在不使用矢量的情况下删除记录。
我希望我已经清楚地解释了我的问题。如果需要,我可以提供进一步的细节。
感谢您抽出时间
答案 0 :(得分:0)
首先,使用std :: vector&lt;&gt;或其他一些容器对象是解决这个问题的方法。如果您可以编写由专业图书馆作者编写的节拍(速度方面),那么请继续。
第二,你的目标是什么?如果只是根据某些标准解除分配该数组中的条目,那么您编写的循环过于复杂。
bool recordDeleted = false;
for (int i=0; i < n; ++i)
{
if (del_name == p[i]->getName())
{
delete p[i];
p[i] = NULL;
recordDeleted = true;
}
}
if ( !recordDeleted )
{
// record not found
}