队列破坏的c ++向量

时间:2014-12-04 01:01:19

标签: c++ c++11 vector destructor

我正在尝试这样做以销毁Products

vector < queue <Product*> > freshDeposit = ...;
for(queue<Product*> q : freshDeposit){
    for (Product p : q) {
        delete p;
    }
}

但这不起作用!你能帮助我吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

如果可用,你几乎总是喜欢智能指针而不是原始指针。

vector<queue<unique_ptr<Product>>> freshDeposit = ...;
freshDeposit.clear();

或者如果你想保留空队列,

for(queue<unique_ptr<Product>> &q : freshDeposit) {
    q.clear();
}

如果您确实希望按原样维护数据结构,但只是发布Product个对象,那么您必须使用deque而不是queue并调用{{ 1}}指针。

reset()