2016-05-02 10 views
1

Ich versuche, eine Prioritätswarteschlange mit Integer-Array-Schlüssel, Float-Array-Vals, die lexikographisch sortiert sind. Während ich den Typ machen kann, habe ich Probleme, ein Objekt zu konstruieren.Erstellen von lexikographisch geordneten Prioritätswarteschlangen in Julia

PQ_type = Base.Collections.PriorityQueue{Vector{Int64}, Vector{Float64}, Base.Order.LexicographicOrdering}

schafft erfolgreich den Typ

Base.Collections.PriorityQueue{Array{Int64,1},Array{Float64,1},Base.Order.LexicographicOrdering}

Aber wenn ich versuchen, ein Objekt den Weg zu konstruieren ich in v0.3 würde, PQ = Base.Collections.PriorityQueue{Vector{Int64}, Vector{Float64}, Base.Order.LexicographicOrdering}()

ich keine Methode erhalten passender Fehler mit dem Vorschlag:

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) Wie kann ich diese Art konstruieren (Ich verstehe nicht, warum die Prioritätswarteschlange als Argument für eine Bestellung Objekt fragt)

2) Gibt es eine Möglichkeit, eine leere Prioritätswarteschlange von zu konstruieren dieser Typ?

Antwort

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

TBH, ich habe gerade einen Blick auf the source und fand heraus, über diese SomethingOrder/Something Symbole und dachte, das Ordering Suffix Sie wurde extra verwendet haben.

Ich würde sagen, es gibt eine meta/Typ/Wirkungs-Beziehung, aber nicht wissen, die Details

1

Auf v0.4.5, scheint dies zu funktionieren:

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 
Verwandte Themen