你能告訴我,如果每次我打電話Count
後,Queue
遍歷所有Queue
和計數或隊列有屬性int
計數和每增加/刪除它增加/減少?Queue.Count - 它是如何工作的?
無論如何,有沒有更好的方法來知道隊列是否爲空?
你能告訴我,如果每次我打電話Count
後,Queue
遍歷所有Queue
和計數或隊列有屬性int
計數和每增加/刪除它增加/減少?Queue.Count - 它是如何工作的?
無論如何,有沒有更好的方法來知道隊列是否爲空?
參見MSDN docs(在谷歌第一命中爲 「queue.count屬性」):
檢索該屬性的值是O(1 )操作。
知道隊列是否爲空的更好方法是使用IEnumerable
的Any方法。
這樣您就不需要遍歷整個集合,只需使用Count方法知道集合中是否至少有一個項目。
if(myQueue.Any())
{
// Do something.
}
在Count
是一個屬性會有用一個小的性能增益的情況下Count
VS Any
但我認爲程序員的意圖是通過Any
在許多情況下保存較好,的目的尤其是當檢查是否有任何項目存在或不存在。
爲什麼「更好」?檢查文檔...「Any()」總是會慢一點。 – Lucero
只有當類沒有實現一個快速的'ICollection
我說得好,因爲程序員的意圖在許多情況下更清晰。在Count是屬性的情況下,任何一個都比較慢,你是對的。 –
Queue<T>
的容量是Queue<T>
可以存儲的元素的數量。Count
是實際在Queue<T>
中的元素的數量。容量始終大於或等於
Count
。如果Count
在添加元素時超過容量,則通過在複製舊元素並添加新元素之前自動重新分配內部數組來增加容量。檢索此屬性的值是O(1)操作。
我必須滑雪它。謝謝。 –
也許不是每個人都知道O(1)是什麼意思? – svick
好吧,關於[big-O-notation](http://en.wikipedia.org/wiki/Big_O_notation)有很多很多關於理解算法成本的解釋......所以如果有人不知道它們,做一些研究並瞭解它們。 **這是一個初學者:維基百科中的[時間複雜度](http://en.wikipedia.org/wiki/Time_complexity#Table_of_common_time_complexities)** – Lucero