设计一个priority_queue C ++

时间:2017-02-15 16:37:58

标签: c++11 stl

目标:设计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。

如果我没有指定默认值,一切都会有效。

0 个答案:

没有答案