C# 'da, bir Kuyruğun boş olup olmadığını nasıl kontrol edebilirim?Kuyruk boş olup olmadığını nasıl kontrol edebilirim?
Kuyruk öğesinin öğelerini yinelemek istiyorum ve ne zaman duracağımı bilmem gerekiyor. Bunu nasıl başarabilirim?
C# 'da, bir Kuyruğun boş olup olmadığını nasıl kontrol edebilirim?Kuyruk boş olup olmadığını nasıl kontrol edebilirim?
Kuyruk öğesinin öğelerini yinelemek istiyorum ve ne zaman duracağımı bilmem gerekiyor. Bunu nasıl başarabilirim?
Eğer sadece kullanma Queue<T>
olabilir demek varsayarsak? Hemen yine de sürekli tekrarlanması ve içi boş olduğunda size vücuda olsun asla: onun Count özelliğini bir uzantısı yöntemi .Count yoktur 0.
Not, kuyruğu işlerken kuyruğa herhangi bir öğe eklemeniz gerekiyorsa (örneğin BFS algoritması uyguluyorsanız) foreach yaklaşımı işe yaramaz. sayım geçersiz sayılır. Count özelliğini kullanmak bu senaryo için doğru yoldur. – DSO
@DSO, sıradaki öğeleri kaldırıyorsanız numaralandırıcı da geçersiz sayılmaz mı? – Jakotheshadows
Öğeleri Dequeue tarafından kaldırmıyorsanız, Queue özelliğini kullanmanın amacı nedir? – titol
Eğer hile yapmak gerekir
if(yourQueue.Count != 0) { /* Whatever */ }
System.Collections.Generic.Queue<T>
geliyordu varsayarsak.
if (queue.Count != 0)
Ama neden rahatsız:
Sen (kontrol edebilirsiniz) o Queue IEnumerable uyguladığı için kullanılabilir.
Ayrıca içinde herhangi bir öğe olup olmadığını görmek için _queue.Any() öğesini de yapabilirsiniz.
eşitse
Queue<string> queue = new Queue<string>();
// It's fine to use foreach...
foreach (string x in queue)
{
// We just won't get in here...
}
İkincisi kötü, ilki korkunç. Queue.Count özelliğini kullanın. –
Queue test = new Queue();
if(test.Count > 0){
//queue not empty
}
sonra Kuyruk (System.Collections.Generic.Queue) kullanırsanız
Queue<String> QST;
...
int numberOfElement = QST.Count();
Qst.Count - O (1) - değil Qst.Count() - O (n) kullanın. –
Ben tüm sıraya sayımını yapmayacağım bu gibi herhangi bir() yöntemini kullanarak öneririm, performans açısından daha iyi olacak.
Queue myQueue = new Queue();
if(myQueue.Any()){
//queue not empty
}
@GregoryBad: 'myQueue.Count' tüm sıra boyunca bir sayı yapmayacaktır. Boyut, Count özelliğinin döndürdüğü özel bir değişkende saklanır. Bu değer yalnızca [Return
@Rutix, Bunun için teşekkürler. Bilmek güzel. – GregoryBrad
@Rutix Enumerable.Count() yöntemi bile, ICollection'a yayınlanıp yayınlanmayacağını ve numaralandırmadan .Count özelliğini döndürüp döndürmeyeceğini kontrol etmek için optimize edilmiştir. –
hangi sıra kullanıyorsunuz? lütfen sıra tanımını gönderin. –
Sıra Nedir? Ne içerir? –
sadece boş olup olmadığını söyleyen işlevi çağırmanız yeterlidir. (kodsuz bir soru için kodsuz bir cevap) – musefan