具有列表容器的优先级队列

时间:2014-09-16 20:01:00

标签: c++ list priority-queue

我正在尝试使用列表作为保存datanode对象的优先级队列的基础容器。它似乎使用vector或deque工作正常,但我尝试使用列表作为底层容器,我尝试将一些东西推入队列我得到错误:

错误3错误C2784:'unknown-type std :: operator - (std :: move_iterator< _RanIt>&,const std :: move_iterator< _RanIt2>&)':无法推断'std的模板参数: :move_iterator< _RanIt> &安培;”来自'std :: _ List_unchecked_iterator>>'

struct datanode{
    int depth;
    int cost;
    const int SIZE = 10;
    int ident[9];   
    int parent;
    datanode(int dep, int id[9], int);
    datanode(int dep, int id[9], int, int);
    datanode(const datanode&);
    datanode(); 
    datanode& datanode::operator=(const datanode&);
};

class NodeComparison
{
  public:
    bool operator() (datanode& da, datanode& db)
    {
        return da.cost > db.cost;
    }
};

int main(){
    std::priority_queue<datanode,list<datanode>, NodeComparison> PQueue;
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    datanode d(0,a,0);
    PQueue.push(d);
 }

1 个答案:

答案 0 :(得分:7)

§23.6.4[priority.queue] / p1:

  

具有随机访问迭代器和支持的任何序列容器   可以使用操作front()push_back()pop_back()   实例化priority_queue

std::list没有随机访问迭代器。