【发布时间】:2010-12-03 14:43:14
【问题描述】:
我可以在 STL 容器(队列和列表)上找到的所有文档都说,对于任何删除函数,都会调用已删除对象的析构函数。这意味着我不能在任何时候使用 std::queue 我想要一个队列,它只是一个需要对它们执行一些操作的对象列表。
我希望能够在对象排队等待我对它们做某事时将它们添加到队列中。然后,当我完成它们时,我想将它们从中删除,而不会破坏有问题的对象。从我读过的文档来看,这似乎是不可能的。我是否误读了文档?除了在调用 pop_front 时不调用已删除对象的析构函数的基本“队列”之外,STL 中是否还有另一种类型的队列?
编辑澄清:就我而言,我使用的是指针列表。像这样的:
dbObject *someObject;
queue<dbObject *> inputQueue;
inputQueue.push_back(someObject);
...
dbObject *objectWithInput = inputQueue.front();
//handle object's input...
inputQueue.pop_front(); // Remove from queue... destroyed now?
【问题讨论】:
-
如果你在队列中存储指针,删除它们不会调用析构函数。