[英]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.