删除要从矢量中删除的指针

时间:2012-05-31 15:54:31

标签: c++ stl stdvector delete-operator erase

假设我有一个指向“Order”对象的指针向量。现在我想从这个向量中删除一个订单。我想知道以下是否是正确的方法来删除这样的指针?

std::vector<Order*> orders; 

// somehow I obtained a vector of Order*, and an iterator it that points to
// an order that I want to remove completely. 

// does the following work? 
Order *order = *it;
orders.erase(it);
delete order;

3 个答案:

答案 0 :(得分:3)

这将删除订单对象。所以是的,这是正确的方法 不过,您应该考虑使用unique_ptrshared_ptr等智能指针。

答案 1 :(得分:3)

指针是new的结果吗?有没有其他人先删除它?如果“是”和“否”,那么您的代码将删除该对象。

答案 2 :(得分:0)

是。这是正确的方法。容器在删除时不会删除其内容。