W języku C#, jak mogę sprawdzić, czy kolejka jest pusta?Jak mogę sprawdzić, czy kolejka jest pusta?
Chcę iterować elementy Queue i muszę wiedzieć, kiedy przestać. Jak mogę to zrobić?
W języku C#, jak mogę sprawdzić, czy kolejka jest pusta?Jak mogę sprawdzić, czy kolejka jest pusta?
Chcę iterować elementy Queue i muszę wiedzieć, kiedy przestać. Jak mogę to zrobić?
Zakładając, że masz na myśli Queue<T>
mógłby wystarczy użyć:
if (queue.Count != 0)
Ale po co się męczyć? Wystarczy iteracyjne nad nim tak, i jeśli jest pusty nigdy nie przedostają się do organizmu:
Queue<string> queue = new Queue<string>();
// It's fine to use foreach...
foreach (string x in queue)
{
// We just won't get in here...
}
Uwaga: podejście foreach nie działa, jeśli musisz dodać jakiekolwiek elementy do kolejki podczas przetwarzania kolejki (np. jeśli wdrażasz algorytm BFS), ponieważ wtedy moduł wyliczający zostanie unieważniony. Korzystanie z właściwości Count jest właściwą drogą do tego scenariusza. – DSO
@ DSO nie zostałby unieważniony przez moduł wyliczający, jeśli usuwasz elementy z kolejki? – Jakotheshadows
Więc jaki jest sens korzystania z kolejki, jeśli nie usuwasz elementów według Dequeue? – titol
Zakładając, że oznaczało System.Collections.Generic.Queue<T>
if(yourQueue.Count != 0) { /* Whatever */ }
powinno załatwić sprawę.
można sprawdzić, czy jego własnością hrabiego równa 0.
Istnieje metoda rozszerzenie .Count(), która jest dostępny, ponieważ kolejka implementuje IEnumerable.
Możesz także zrobić _queue.Any(), aby zobaczyć, czy są w nim jakieś elementy.
Drugi jest zły, pierwszy jest okropny. Użyj właściwości queue.Count. –
Queue test = new Queue();
if(test.Count > 0){
//queue not empty
}
jeśli używasz kolejki (System.Collections.Generic.Queue) następnie
Queue<String> QST;
...
int numberOfElement = QST.Count();
Użyj Qst.Count - O (1) - nie Qst.Count() - O (n). –
Proponuję przy użyciu dowolnej metody(), ponieważ nie zrobi liczyć na całej kolejki, która będzie lepsza pod względem wydajności.
Queue myQueue = new Queue();
if(myQueue.Any()){
//queue not empty
}
@GregoryBad: 'myQueue.Count' nie spowoduje zliczenia całej kolejki. Rozmiar jest przechowywany w prywatnej zmiennej w klasie kolejki, którą właśnie zwraca właściwość Count, patrz [Kolejka
@Rutix, Dzięki za to. Dobrze wiedzieć. – GregoryBrad
@Rutix Nawet metoda Enumerable.Count() jest zoptymalizowana, aby sprawdzić, czy można ją przesłać do ICollection i zwrócić właściwość .Count bez wyliczania. –
Którą kolejkę używasz? proszę opublikować definicję kolejki. –
Co to jest kolejka? Co zawiera? –
wystarczy wywołać funkcję, która mówi, czy jest pusta, czy nie. (odpowiedź bez kodu na pytanie bez kodu) – musefan