22#include <unordered_set>
43 void push(
const T& value) {
44 if (seen_.insert(value).second) {
53 if (!queue_.empty()) {
62 const T&
front()
const {
return queue_.front(); }
68 bool empty()
const {
return queue_.empty(); }
74 while (!queue_.empty())
81 std::unordered_set<T> seen_;
A queue that ensures each element is inserted only once.
Definition UniqueQueue.h:37
void clear()
Clears the queue and the set of seen elements.
Definition UniqueQueue.h:73
const T & front() const
Accesses the front element of the queue.
Definition UniqueQueue.h:62
void pop()
Removes the front element from the queue.
Definition UniqueQueue.h:52
void push(const T &value)
Pushes an element to the queue if it hasn't been inserted before.
Definition UniqueQueue.h:43
bool empty() const
Checks whether the queue is empty.
Definition UniqueQueue.h:68