0

你能告诉我每次我打电话后Count,检查Queue所有的Queue计数或队列是否有一个int计数的属性,并且每次添加/删除它都会增加/减少?

无论如何,有没有更好的方法来知道队列是否为空?

4

3 回答 3

5

请参阅MSDN 文档(“queue.count 属性”在 Google 中的第一次点击):

检索此属性的值是 O(1) 操作。

于 2012-09-16T13:12:41.793 回答
2

a的容量是可以存储Queue<T>的元素的数量。是实际在 中的元素数。Queue<T>CountQueue<T>

容量总是大于或等于Count。如果Count在添加元素时超出容量,则通过在复制旧元素并添加新元素之前自动重新分配内部数组来增加容量。

检索此属性的值是 O(1) 操作。

取自Queue<T>.Count PropertyMSDN 上的源代码

于 2012-09-16T13:12:37.323 回答
-1

了解 Queue 是否为空的更好方法是使用IEnumerableAny方法

这样,您无需遍历整个集合即可在使用 Count 方法时简单地了解集合中是否至少有一个项目。

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

在 where 是一个属性的情况下,使用vsCount会有轻微的性能提升,但是我认为在许多情况下程序员的意图会更好地保留下来,特别是当检查的目的是查看是否存在任何项目时。CountAnyAny

于 2012-09-16T13:12:15.147 回答