我正在尝试使用整数数组键创建一个优先级队列,浮点数组值按字典顺序排序。虽然我可以制作类型,但我无法构建对象。
PQ_type = Base.Collections.PriorityQueue{Vector{Int64}, Vector{Float64}, Base.Order.LexicographicOrdering}
成功创建了
类型 Base.Collections.PriorityQueue{Array{Int64,1},Array{Float64,1},Base.Order.LexicographicOrdering}
但是如果我按照我在v0.3中的方式尝试构造一个对象,
PQ = Base.Collections.PriorityQueue{Vector{Int64}, Vector{Float64}, Base.Order.LexicographicOrdering}()
我得到了一个没有方法匹配错误的建议:
Closest candidates are:
Base.Collections.PriorityQueue{K,V,O<:Base.Order.Ordering}(::Any, ::O<:Base.Order.Ordering)
call{T}(::Type{T}, ::Any)
convert{T}(::Type{T}, ::T)
...
in call at essentials.jl:57
1)我如何构造这种类型(我不理解为什么优先级队列要求订购对象作为参数)
2)有没有办法构建这种类型的空优先级队列?
答案 0 :(得分:1)
pq=Base.Collections.PriorityQueue(Int64,Int64,Base.Order.Lexicographic)
TBH,我刚刚查看the source并了解了这些SomethingOrder
/ Something
符号,并认为您使用的Ordering
后缀是额外的。
我会说有一个元/类型/函数关系,但不知道细节
答案 1 :(得分:1)
在v0.4.5上,这似乎有效:
pq = Base.Collections.PriorityQueue([1,2,3,4],[1.5,2.5,3.5,4.5],Base.Order.Lexicographic)
Base.Collections.PriorityQueue{Int64,Float64,Base.Order.LexicographicOrdering} with 4 entries:
4 => 4.5
2 => 2.5
3 => 3.5
1 => 1.5