int main(){
vector<Customer*> newcustomer;
newcustomer.push_back(new Customer("III", 123333, 555));
newcustomer.push_back(new Customer("LOL", 122222, 444));
newcustomer.push_back(new Customer("PPL", 121111, 333));
for (int i = 0; i < 3; i++){
cout << newcustomer[i]->getName() << endl;
cout << newcustomer[i]->getPhone() << endl;
cout << newcustomer[i]->getID() << endl;
cout << endl;
}
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个名为customer的类,你可以插入新客户,getName返回名称,getPhone返回电话号码,GetID返回ID,现在我想从该向量中删除所有内容,不知道该怎么做.
要擦除矢量中的所有元素,您只需使用
myvector.erase (myvector.begin(),myvector.end());或myvector.clear().但是这里的问题不仅仅是从向量中删除元素,还要删除在堆上分配的内存.以下是我的解决方案.
int main(){
vector<Customer*> newcustomer;
newcustomer.push_back(new Customer("III", 123333, 555));
newcustomer.push_back(new Customer("LOL", 122222, 444));
newcustomer.push_back(new Customer("PPL", 121111, 333));
for (int i = 0; i < 3; i++){
cout << newcustomer[i]->getName() << endl;
cout << newcustomer[i]->getPhone() << endl;
cout << newcustomer[i]->getID() << endl;
cout << endl;
}
while(!newcustomer.empty())
{
Customer *cust = newcustomer.front();
newcustomer.erase(newcustomer.begin());
delete cust;
}
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果您只是想擦除矢量上的所有内容,请使用: http ://www.cplusplus.com/reference/vector/vector/erase/
这是向量的擦除函数
// erase the first 3 elements:
newcustomer.erase (newcustomer.begin(),newcustomer.begin()+3);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |