队列:
队列是一种特殊的数据结构。其特殊性在于数据是先进先出。在iOS里面应用到的就是GCD了。
常见的队列有数组队列、单链表队列、循环队列,这里仅以数组队列为例说明。
iOS:
GCD里面串行队列、并发队列、全局队列、主队列。也就是说GCD里面的子线程处理完后就会按照队列这种结果进行出队列。
代码实现:
public struct Queue<T> {
private var data = [T]()
public init() {}
public mutating func dequeue() -> T? {
return data.removeFirst()
}
public func peek() -> T? {
return data.first
}
public mutating func enqueue(element: T) {
data.append(element)
}
public mutating func clear() {
data.removeAll()
}
public var count: Int {
return data.count
}
public var capacity: Int {
get {
return data.capacity
}
set {
data.reserveCapacity(newValue)
}
}
public func isFull() -> Bool {
return count == data.capacity
}
public func isEmpty() -> Bool {
return data.isEmpty
}
}
测试应用:
var testQueue:Queue = Queue<Int>()
testQueue.enqueue(element: 1)
testQueue.enqueue(element: 3)
testQueue.enqueue(element: 5)
testQueue.enqueue(element: 7)
testQueue.dequeue()
testQueue.peek()
testQueue.dequeue()
testQueue.peek()
testQueue.dequeue()