2016-05-02 119 views
1

我正在嘗試使用按字典順序排序的整數數組鍵,浮點數組val。雖然我可以製作類型,但在構建對象時遇到了問題。在julia中構造按字母順序排列的優先級隊列

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)有沒有一種方法來構造一個空優先級隊列這個類型?

回答

1
pq=Base.Collections.PriorityQueue(Int64,Int64,Base.Order.Lexicographic) 

TBH,我只是看了看the source並發現了這些SomethingOrder/Something符號,還以爲你在使用Ordering後綴是多餘的。

我會說有一個元/類型/功能關係,但不知道詳細

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