簡體   English   中英

帶有列表容器的優先隊列

[英]priority queue with a list container

我正在嘗試使用列表作為保存 datanode 對象的優先級隊列的底層容器。 使用向量或雙端隊列似乎可以正常工作,但我嘗試使用列表作為底層容器,並嘗試將某些內容推送到隊列中,但出現錯誤:

錯誤 3 錯誤 C2784:“未知類型 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);
 }

§23.6.4 [priority.queue]/p1:

任何具有隨機訪問迭代器和支持操作front()push_back()pop_back()序列容器都可用於實例化priority_queue

std::list沒有隨機訪問迭代器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM