如果priority_queue的容器没有push_back功能怎么办?

时间:2014-12-23 04:29:17

标签: c++ stl priority-queue

std::priority_queue::push

priority_queue中插入新元素。此新元素的内容初始化为val。

此成员函数有效地调用底层容器对象的成员函数push_back,然后通过调用包含所有元素的范围的push_heap算法将其重新排序到堆中的位置。容器。

现在,当我们制作自己的priority_queu并指定container not in C++ STL并且没有push_back函数时,std::priority_queue::push将如何工作...?

1 个答案:

答案 0 :(得分:4)

Container模板的std::priority_queue必须满足SequenceContainer要求,并提供front()push_back()pop_back()。没有它们,代码将无法编译,只是以下代码无法编译的方式。

template <typename T>
class Fail
{
public:
Fail() {a.make();}

private:
T a;
};

int main()
{
Fail<int> fail_int;
return 0;
}