目标:设计priority_queue:
问题:如何使用引用作为构造函数的参数。
当前实现: [Stub]如果包含算法,向量和功能,将编译。我并不认为这是我的。我在某处了解了它是如何实现的,然后尝试从内存中重新创建。
template <typename T,class container = std::vector<T>,
class cmp std::less<T> >
class priority_queue{
public:
explicit priority_queue(container c = container(),
cmp x = cmp()):
cx(c),
cm(x)
{
std::make_heap(cx.begin(), cx.end(), cm);
}
private:
container cx;
cmp cm;
这很有效。
然而,以下是我的愿望。
priority_queue(container &c = container(),
cmp &x = cmp())
这是为了避免rvalue被初始化为container(),然后被复制到“c”,后来被复制到cx。
如果我没有指定默认值,一切都会有效。