2012-09-16 74 views
1

你能告訴我,如果每次我打電話Count後,Queue遍歷所有Queue和計數或隊列有屬性int計數和每增加/刪除它增加/減少?Queue.Count - 它是如何工作的?

無論如何,有沒有更好的方法來知道隊列是否爲空?

回答

4

參見MSDN docs(在谷歌第一命中爲 「queue.count屬性」):

檢索該屬性的值是O(1 )操作。

+0

我必須滑雪它。謝謝。 –

+3

也許不是每個人都知道O(1)是什麼意思? – svick

+0

好吧,關於[big-O-notation](http://en.wikipedia.org/wiki/Big_O_notation)有很多很多關於理解算法成本的解釋......所以如果有人不知道它們,做一些研究並瞭解它們。 **這是一個初學者:維基百科中的[時間複雜度](http://en.wikipedia.org/wiki/Time_complexity#Table_of_common_time_complexities)** – Lucero

0

知道隊列是否爲空的更好方法是使用IEnumerableAny方法。

這樣您就不需要遍歷整個集合,只需使用Count方法知道集合中是否至少有一個項目。

if(myQueue.Any()) 
{ 
// Do something. 
} 

Count是一個屬性會有用一個小的性能增益的情況下Count VS Any但我認爲程序員的意圖是通過Any在許多情況下保存較好,的目的尤其是當檢查是否有任何項目存在或不存在。

+1

爲什麼「更好」?檢查文檔...「Any()」總是會慢一點。 – Lucero

+1

只有當類沒有實現一個快速的'ICollection .Count'時,'Any()'更快纔是真正的'Enumerable.Count()'。有人可能會爭辯說,Any()比Count Count更好,但這只是一種風格選擇。 – CodesInChaos

+0

我說得好,因爲程序員的意圖在許多情況下更清晰。在Count是屬性的情況下,任何一個都比較慢,你是對的。 –

2

Queue<T>的容量是Queue<T>可以存儲的元素的數量。 Count是實際在Queue<T>中的元素的數量。

容量始終大於或等於Count。如果Count在添加元素時超過容量,則通過在複製舊元素並添加新元素之前自動重新分配內部數組來增加容量。

檢索此屬性的值是O(1)操作。

從源兩者Queue<T>.Count Property on MSDN

+2

不要抄襲,引用來源! – Lucero

+0

現在好嗎? –

+0

是的,好多了。 – Lucero

相關問題