我有一个指向向量的指针,这些指针指向动态分配的火星结构。我的add函数似乎运行良好,但是我担心我的delete函数无法正确删除对象和指针。你们可以看一下删除功能,然后告诉我要在哪里解决该问题吗?
struct Martian
{
string fname, lname, ssid;
Martian(string fname, string lname, string ssid) : fname(fname), lname(lname), ssid(ssid){}
};
class martianDatabase
{
public:
vector<Martian*> database;
martianDatabase();
void deleteMartian(string deletedID);
void addMartian(int &i, string f, string l, string id);
int iterator = 0, size = 0;
};
void martianDatabase::addMartian(int& i, string f, string l, string id)
{
this->database.push_back(new Martian(f, l, id));
i++;
}
void martianDatabase::deleteMartian(string deleteID)
{
int i = 0;
while (i < size +1)
{
if (this->database[i]->ssid == deleteID){
delete this->database[i];
size--;
break;
}
else ++i;
}
}
这将删除所有Martian
具有匹配ssid
值的对象。
void martianDatabase::deleteMartian( string deleteID )
{
auto martianIterator = database.begin();
while( martianIterator != database.end() )
{
if( (*martianIterator)->ssid == deleteID )
{
delete *martianIterator;
martianIterator = database.erase( martianIterator );
}
else
{
++martianIterator;
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句