Shared Queue

Defined in header <haz/SharedQueue.hpp>

template<
    class T,
    std::size_t N
> class SharedQueue;

SharedQueue is an fixed size queue with additional functions to controle multiple access at the same time. The elements are stored contiguously in a buffer of size N, but are not in order. The iterators will iterate through the collection in order of insertion though.

Complexity: - Insertion at the beginning and removal at the end of elements: constant O(1) - Random Access: constant O(1)

Template parameters

T: The type of the elements N: The maximum number of element in the buffer

It is recommended to use a power of 2 for the size S so the index is computed faster.

Members functions

Element access

at Access specified element with bounds checking
back Access the last element
front Access the first element
operator [] Access specified element without bounds checking

Iterators

begin, cbegin Returns an iterator to the beginning
end, cend Returns an iterator to the end
rbegin, crbegin Returns a reverse iterator to the beginning
end, cend Returns a reverse iterator to the end

Capacity

capacity Returns the maximum number of elements
empty Checks whether the container is empty
max_size Returns the maximum number of elements
size Returns the number of elements

Modifiers

assign Replaces the content
clear Clear the content
emplace_back Construct an element in-place at the end
pop_front Pop the first element
push_back Insert an element to the end
swap Swaps the contents

Non-member function

operator ==, !=, <=, >=, <, > Lexicograpically compares the values
std::swap specialize the std::swap algorithm