Lernziele
Die Klasse b_queue |
| Einfügen, Löschen und Auswählen von Elementen |
| Test auf Enthaltensein |
Wenn wir im Voraus eine Obergrenze für die Anzahl der Elemente in
einer Queue kennen, und diese Obergrenze nicht allzu groß ist, so
sollten wir statt der Klasse queue die Klasse
b_queue verwenden („bounded queue“ = begrenzte
Schlange).
Im Konstruktor der Klasse muss die Obergrenze
N der Elemente angegeben werden, also etwa
b_queue<int> BS(N);
Diese Klasse besitzt genau dieselbe Schnittstelle wie die
Klasse queue, ist aber durch zirkuläre C++-Arrays
implementiert. Daher kommt sie i. Allg. mit weniger Speicherplatz aus, und der Zugriff auf das erste und letzte Element ist besonders schnell: Alle
Operationen benötigen Zeit O(1). Der Platzverbrauch bei N Elementen
ist O(N).
Für diese Klasse gilt dasselbe, was wir schon in Abschnitt 2.4.2 über das Verhältnis von b_stack zu stack gesagt haben:
Mit „bekannte Obergrenze“ ist hier
nicht eine möglicherweise astronomisch hohe Zahl N
gemeint, die sich durch eine mathematische Analyse des
Algorithmus ergeben hat, die aber in konkreten Programmläufen
als Elementanzahl nie erreicht wird. Vielmehr sollte die
entsprechende Schlange irgendwann einmal tatsächlich (fast)
N Elemente besitzen und dieses
N eben nicht exorbitant groß sein.
Mehr zu Schlangen mit begrenzter Elementanzahl kann auf der entsprechenden Manualseite gefunden werden.