我有一个指针向量,指向动态分配的火星结构。我的添加功能似乎工作正常,但我害怕我的删除功能没有正确删除对象和指针。你们可以查看删除功能并告诉我将在哪里解决问题吗?
$(".List-A").on("click", ".orderIt", function() {
$(this).parent().prepend($(this));
$('.' + this.id).parent().prepend($('.' + this.id));
});
答案 0 :(得分:0)
通过在指针上调用delete,您将释放指向对象使用的内存空间(实际上内存不会被释放,但是假设它可以重用)。
你的程序会遇到的问题是你删除了你的条目,然后减少了向量的大小,但指针没有删除而没有设置为nullptr,这意味着你在尝试取消引用它时会遇到问题(你的代码仅在删除最后一个元素时才有效。
另外,您可以(应该?)使用c ++ 11引入的新智能指针,在您的情况下,您可以用std :: shared_ptr替换原始指针。
答案 1 :(得分:0)
这会删除所有匹配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;
}
}
}