tesseract v5.3.3.20231005
Queue< E > Class Template Reference

#include <sample3-inl.h>

Public Member Functions

 Queue ()
 
 ~Queue ()
 
void Clear ()
 
size_t Size () const
 
QueueNode< E > * Head ()
 
const QueueNode< E > * Head () const
 
QueueNode< E > * Last ()
 
const QueueNode< E > * Last () const
 
void Enqueue (const E &element)
 
E * Dequeue ()
 
template<typename F >
QueueMap (F function) const
 

Detailed Description

template<typename E>
class Queue< E >

Definition at line 73 of file sample3-inl.h.

Constructor & Destructor Documentation

◆ Queue()

template<typename E >
Queue< E >::Queue ( )
inline

Definition at line 76 of file sample3-inl.h.

76: head_(nullptr), last_(nullptr), size_(0) {}

◆ ~Queue()

template<typename E >
Queue< E >::~Queue ( )
inline

Definition at line 79 of file sample3-inl.h.

79{ Clear(); }
void Clear()
Definition: sample3-inl.h:82

Member Function Documentation

◆ Clear()

template<typename E >
void Queue< E >::Clear ( )
inline

Definition at line 82 of file sample3-inl.h.

82 {
83 if (size_ > 0) {
84 // 1. Deletes every node.
85 QueueNode<E>* node = head_;
86 QueueNode<E>* next = node->next();
87 for (; ;) {
88 delete node;
89 node = next;
90 if (node == nullptr) break;
91 next = node->next();
92 }
93
94 // 2. Resets the member variables.
95 head_ = last_ = nullptr;
96 size_ = 0;
97 }
98 }
def next(obj)
Definition: ast.py:56
QueueNode * next()
Definition: sample3-inl.h:55

◆ Dequeue()

template<typename E >
E * Queue< E >::Dequeue ( )
inline

Definition at line 130 of file sample3-inl.h.

130 {
131 if (size_ == 0) {
132 return nullptr;
133 }
134
135 const QueueNode<E>* const old_head = head_;
136 head_ = head_->next_;
137 size_--;
138 if (size_ == 0) {
139 last_ = nullptr;
140 }
141
142 E* element = new E(old_head->element());
143 delete old_head;
144
145 return element;
146 }
const E & element() const
Definition: sample3-inl.h:52

◆ Enqueue()

template<typename E >
void Queue< E >::Enqueue ( const E &  element)
inline

Definition at line 115 of file sample3-inl.h.

115 {
116 QueueNode<E>* new_node = new QueueNode<E>(element);
117
118 if (size_ == 0) {
119 head_ = last_ = new_node;
120 size_ = 1;
121 } else {
122 last_->next_ = new_node;
123 last_ = new_node;
124 size_++;
125 }
126 }

◆ Head() [1/2]

template<typename E >
QueueNode< E > * Queue< E >::Head ( )
inline

Definition at line 104 of file sample3-inl.h.

104{ return head_; }

◆ Head() [2/2]

template<typename E >
const QueueNode< E > * Queue< E >::Head ( ) const
inline

Definition at line 105 of file sample3-inl.h.

105{ return head_; }

◆ Last() [1/2]

template<typename E >
QueueNode< E > * Queue< E >::Last ( )
inline

Definition at line 108 of file sample3-inl.h.

108{ return last_; }

◆ Last() [2/2]

template<typename E >
const QueueNode< E > * Queue< E >::Last ( ) const
inline

Definition at line 109 of file sample3-inl.h.

109{ return last_; }

◆ Map()

template<typename E >
template<typename F >
Queue * Queue< E >::Map ( function) const
inline

Definition at line 152 of file sample3-inl.h.

152 {
153 Queue* new_queue = new Queue();
154 for (const QueueNode<E>* node = head_; node != nullptr;
155 node = node->next_) {
156 new_queue->Enqueue(function(node->element()));
157 }
158
159 return new_queue;
160 }
Queue()
Definition: sample3-inl.h:76
void Enqueue(const E &element)
Definition: sample3-inl.h:115

◆ Size()

template<typename E >
size_t Queue< E >::Size ( ) const
inline

Definition at line 101 of file sample3-inl.h.

101{ return size_; }

The documentation for this class was generated from the following file: