什么是底层容器?

时间:2016-05-18 17:57:07

标签: c++

我在项目中使用了priority_queue,我决定使用仿函数进行初始化,但在网上查找我发现了这个:

std::priority_queue<int, std::vector<int>, std::greater<int> > pq;

我已经使用过它并且有效,但我不确定为什么在那里使用std::vector<int>以及底层容器是什么以及如何管理它们(我查找信息,但我不明白这个想法。

2 个答案:

答案 0 :(得分:6)

std::priority_queue实际上不是一个容器,而是一个容器适配器,也就是说,它需要一个容器并在其上构建一个不同的接口。

底层容器当然是它适应的容器。通过使用C ++模板魔术,您可以将std::vector更改为std::deque,一切都会正常工作。

关于使用哪个容器,std::vector vs std::deque的相同原理适用:std::priority_queue部分不包含值,它只是以一种特殊的方式呈现它们。

答案 1 :(得分:1)

这向我建议优先级队列数据结构使用向量来保持值。它使用更大的方法进行排序,以便更高的值首先出现在向量中,随着时间的推移逐渐减少。

如果有意义,它可以使用另一种数据结构,但在这种情况下,它选择使用向量。