2.7.2. Schlangen mit beschränkter Elementanzahl (Klasse b_queue)

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.