semf
semf::LinkedList< T >::ConstIterator Class Reference

Implementation of a bidirectional constant iterator for LinkedList. More...

#include <linkedlist.h>

Collaboration diagram for semf::LinkedList< T >::ConstIterator:
Collaboration graph

Public Types

using iterator_category = std::bidirectional_iterator_tag
 
using value_type = T
 
using difference_type = std::ptrdiff_t
 
using pointer = T *
 
using refernce = T &
 

Public Member Functions

 ConstIterator ()=default
 
 ConstIterator (const T *element)
 Constructor with member variable initialization. More...
 
 ConstIterator (const Iterator &iterator)
 Copy constructor. More...
 
virtual ~ConstIterator ()=default
 
const T & operator* () const
 Returns the reference of the element the iterator's position. More...
 
const T * operator-> () const
 Returns the pointer into the element the iterator's position. More...
 
ConstIteratoroperator++ ()
 Iterates to the next element in the list. More...
 
ConstIterator operator++ (int)
 Iterates to the next element in the list. More...
 
ConstIteratoroperator-- ()
 Iterates to the previous element in the list. More...
 
ConstIterator operator-- (int)
 Iterates to the previous element in the list. More...
 
bool operator== (const ConstIterator &other) const
 Compares this element with that element. More...
 
bool operator!= (const ConstIterator &other) const
 Compares this element with that element. More...
 

Detailed Description

template<class T>
class semf::LinkedList< T >::ConstIterator

Implementation of a bidirectional constant iterator for LinkedList.

Definition at line 230 of file linkedlist.h.

Member Typedef Documentation

◆ difference_type

template<class T >
using semf::LinkedList< T >::ConstIterator::difference_type = std::ptrdiff_t

Definition at line 235 of file linkedlist.h.

◆ iterator_category

template<class T >
using semf::LinkedList< T >::ConstIterator::iterator_category = std::bidirectional_iterator_tag

Definition at line 233 of file linkedlist.h.

◆ pointer

template<class T >
using semf::LinkedList< T >::ConstIterator::pointer = T*

Definition at line 236 of file linkedlist.h.

◆ refernce

template<class T >
using semf::LinkedList< T >::ConstIterator::refernce = T&

Definition at line 237 of file linkedlist.h.

◆ value_type

template<class T >
using semf::LinkedList< T >::ConstIterator::value_type = T

Definition at line 234 of file linkedlist.h.

Constructor & Destructor Documentation

◆ ConstIterator() [1/3]

template<class T >
semf::LinkedList< T >::ConstIterator::ConstIterator ( )
default

◆ ConstIterator() [2/3]

template<class T >
semf::LinkedList< T >::ConstIterator::ConstIterator ( const T *  element)
inlineexplicit

Constructor with member variable initialization.

Parameters
elementPointer to the element starting iterating.

Definition at line 244 of file linkedlist.h.

◆ ConstIterator() [3/3]

template<class T >
semf::LinkedList< T >::ConstIterator::ConstIterator ( const Iterator iterator)
inlineexplicit

Copy constructor.

Parameters
iteratoriterator to copy from.

Definition at line 252 of file linkedlist.h.

◆ ~ConstIterator()

template<class T >
virtual semf::LinkedList< T >::ConstIterator::~ConstIterator ( )
virtualdefault

Member Function Documentation

◆ operator!=()

template<class T >
bool semf::LinkedList< T >::ConstIterator::operator!= ( const ConstIterator other) const
inline

Compares this element with that element.

Parameters
otherIterator to compare.
Returns
true for both iterators are different elements; false for both iterators are the same element.

Definition at line 340 of file linkedlist.h.

◆ operator*()

template<class T >
const T & semf::LinkedList< T >::ConstIterator::operator* ( ) const
inline

Returns the reference of the element the iterator's position.

Attention
Using the reference for an iterator being nullptr (e.g. LinkedList::end) leads to undefined behavior.
Returns
Reference to the element.

Definition at line 264 of file linkedlist.h.

◆ operator++() [1/2]

template<class T >
ConstIterator & semf::LinkedList< T >::ConstIterator::operator++ ( )
inline

Iterates to the next element in the list.

Attention
Using the reference for an iterator being nullptr (e.g. LinkedList::end) leads to undefined behavior.
Returns
Next element in the list.

Definition at line 284 of file linkedlist.h.

◆ operator++() [2/2]

template<class T >
ConstIterator semf::LinkedList< T >::ConstIterator::operator++ ( int  )
inline

Iterates to the next element in the list.

Attention
Using the reference for an iterator being nullptr (e.g. LinkedList::end) leads to undefined behavior.
Returns
Copy of unchanged this.

Definition at line 295 of file linkedlist.h.

◆ operator--() [1/2]

template<class T >
ConstIterator & semf::LinkedList< T >::ConstIterator::operator-- ( )
inline

Iterates to the previous element in the list.

Attention
Using the reference for an iterator being nullptr (e.g. LinkedList::end) leads to undefined behavior.
Returns
Previous element in the list.

Definition at line 307 of file linkedlist.h.

◆ operator--() [2/2]

template<class T >
ConstIterator semf::LinkedList< T >::ConstIterator::operator-- ( int  )
inline

Iterates to the previous element in the list.

Attention
Using the reference for an iterator being nullptr (e.g. LinkedList::end) leads to undefined behavior.
Returns
Copy of unchanged this.

Definition at line 318 of file linkedlist.h.

◆ operator->()

template<class T >
const T * semf::LinkedList< T >::ConstIterator::operator-> ( ) const
inline

Returns the pointer into the element the iterator's position.

Attention
Using the reference for an iterator being nullptr (e.g. LinkedList::end) leads to undefined behavior.
Returns
Pointer into the element.

Definition at line 274 of file linkedlist.h.

◆ operator==()

template<class T >
bool semf::LinkedList< T >::ConstIterator::operator== ( const ConstIterator other) const
inline

Compares this element with that element.

Parameters
otherIterator to compare.
Returns
true for both iterator's position is the same element; false for both iterator's position are different elements.

Definition at line 330 of file linkedlist.h.