2.7.2. Queues with a bounded number of elements (class b_queue)

Learning objectives

The class b_queue

If we know an upper bound for the number of elements in a queue in advance and this upper bound is not too large, we should use the class b_queue instead of the class queue (“bounded queue”).

The upper bound N of the number of elements must be specified in the constructor of the class, like for example in

b_queue<int> BS(N);

This class has exactly the same interface as the class queue; however, it is implemented by circular C++ arrays. Therefore it gets by on less storage in general, and the access to the first and last element is particularly fast: All operations take time O(1). The space consumption is O(N) with N elements stored.

The same we already said about the relationship of b_stack to stack in Section 2.4.2 also applies to this class: With a “known upper bound” we do not mean a possibly astronomically large number N that has been the result of a mathematical analysis of the algorithm but is never reached in concrete program runs as the actual number of elements. Rather some time, the corresponding queue should actually have (almost) N elements and this N should not be exorbitantly large.

More about queues with a bounded number of elements can be found on the corresponding manual page.