C++ c++;队列破坏向量

C++ c++;队列破坏向量,c++,c++11,vector,destructor,C++,C++11,Vector,Destructor,我试图这样做是为了破坏产品: vector < queue <Product*> > freshDeposit = ...; for(queue<Product*> q : freshDeposit){ for (Product p : q) { delete p; } } vectorfreshDeposit=。。。; 对于(队列q:freshDeposit){ 对于(产品p:q){ 删除p; } } 但这不管用!你能帮助

我试图这样做是为了破坏
产品

vector < queue <Product*> > freshDeposit = ...;
for(queue<Product*> q : freshDeposit){
    for (Product p : q) {
        delete p;
    }
}
vectorfreshDeposit=。。。;
对于(队列q:freshDeposit){
对于(产品p:q){
删除p;
}
}
但这不管用!你能帮助我吗?
谢谢

如果可用,您应该总是喜欢智能指针而不是原始指针

vector<queue<unique_ptr<Product>>> freshDeposit = ...;
freshDeposit.clear();
vector<deque<unique_ptr<Product>>> freshDeposit = ...;
for(deque<unique_ptr<Product>> &q : freshDeposit) {
    for(unique_ptr<Product> &p : q) {
        p.reset();
    }
}

产品
产品*
的类型不同。不能删除
产品p
,因为它不是指针。Auch!这类问题的投票速度有多快。。。即使它们是有效的。您可能希望
排队&q:freshDeposit
(注意
&
)以避免无用的副本。
vector<deque<unique_ptr<Product>>> freshDeposit = ...;
for(deque<unique_ptr<Product>> &q : freshDeposit) {
    for(unique_ptr<Product> &p : q) {
        p.reset();
    }
}