[英]Delete a pointer to be erased from a vector
假設我有一個指向“ 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;
這將刪除訂單對象。 是的,這是正確的方法。
不過,您應該考慮使用智能指針,例如unique_ptr
或shared_ptr
。
指針是new
的結果嗎? 還有其他人先刪除它嗎? 如果“是”和“否”,則您的代碼將刪除該對象。
是。 這是正確的方法。 容器在擦除后不會刪除其內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.