PriorityQueue 0.3

PriorityQueue 0.3

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2015年7月
SPM支持SPM

Markus Cozowicz维护。



  • Bouke Haarsma,Julien Dauphant和Markus Cozowicz共同作者。

Swift-PriorityQueue

作为框架包含时,与其他框架一样导入它

import PriorityQueue

优先队列被定义为泛型并使用比较回调初始化,如PriorityQueue<T>((T, T) -> Bool)。例如,它可以像这样操作字符:

var characters = PriorityQueue<Character>(<)
characters.push("C")
characters.push("B")
characters.push("A")

println("Characters:")
for p in characters {
    println(" * \(p)")
}
println()

这将打印

 * A
 * B
 * C

更实际的用例将操作结构体或类,如这样

struct Node {
    let priority: Int
}

var nodes = PriorityQueue<Node>({ $0.priority < $1.priority })
nodes.push(Node(priority: 4))
nodes.push(Node(priority: 5))
nodes.push(Node(priority: 3))
nodes.push(Node(priority: 1))

println("Nodes:")
for node in nodes {
    println(" * Node(priority: \(node.priority))")
}
println()

这将打印

Nodes:
* Node(priority: 1)
* Node(priority: 3)
* Node(priority: 4)
* Node(priority: 5)

移除项目

var ints = PriorityQueue<Int>(<)
ints.push(3)
ints.remove(3)  // Returns 3
ints.remove(3)  // Returns nil

检查堆

ints.push(5)
ints.push(4)
ints.heap  // Returns [4, 5]

替代方案

  • CFBinaryHeap(一旦CFunctionPointer可用)
  • Swift-DataStructures/MinPQ

开发

Playground

使用以下命令重建此Playground

rm -rf README.playground/
playground README.md --platform ios