如何删除STXXL优先级队列?

时间:2014-11-27 09:17:09

标签: c++ priority-queue stxxl

我在程序中创建了一个STXXL优先级队列。 如果我不再需要PQ,如何删除它?就像在C ++中删除[]缓冲区一样。 我想释放它使用的内存。

我浏览了their examples and description,但我找不到方法。 一旦创建了PQ,该PQ将占用内存直到程序结束?

例如,如果我定义两个优先级队列:Q1和Q2。

typedef stxxl::PRIORITY_QUEUE_GENERATOR <
   SufNode<unsigned char>,
   ComparatorGreater<unsigned char>,
   mem*1024*1024, 1024*1024
 >::result pqueue_type0;

 pqueue_type0 Q1(pool1); 

然后我用Q1做一些事情,然后删除它,这样我就可以为Q2分配更多的内存。

typedef stxxl::PRIORITY_QUEUE_GENERATOR<
   SufNode<unsigned char>,
   ComparatorGreater2<unsigned char>,
   mem*1024*1024, 1024*1024
>::result pqueue_type20;

pqueue_type20 Q2(pool2); 

1 个答案:

答案 0 :(得分:0)

当Q1超出范围时,它的内存将自动释放。所以不要把所有东西都放在一个大功能中。把Q1和你用它做的事情放在一个函数中,把Q2放在另一个函数中。

最大的问题是如果需要Q1来创建Q2,那么需要Q2来创建Q3等。在这种情况下,std::unique_ptr<pqueue_type0>可以很方便。