MorphoGraphX  2.0-1-227
Public Types | Public Member Functions | List of all members
mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer > Class Template Reference

Iterate over a container of structure, dereferencing only a member of it. More...

#include <MemberIterator.hpp>

+ Inheritance diagram for mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >:

Public Types

typedef BaseIterator< Iterator, SelectMemberIterator< Iterator, T, member, Reference, Pointer > > Super
 Type of the base class. More...
 
typedef Iterator base_iterator
 Type of the underlying iterator. More...
 
typedef std::iterator_traits< Iterator >::iterator_category iterator_category
 Category of the iterator. More...
 
typedef T value_type
 Type of the value iterated on. More...
 
typedef std::iterator_traits< Iterator >::difference_type difference_type
 Type of the difference between two iterators. More...
 
typedef Reference reference
 Type of a reference on the values. More...
 
typedef Pointer pointer
 Type of a pointer on the values. More...
 
- Public Types inherited from mgx::BaseIterator< Iterator, SelectMemberIterator< Iterator, T, member, T &, T * > >
typedef Iterator base_iterator
 
typedef std::iterator_traits< Iterator >::difference_type difference_type
 Type of the difference between two iterators. More...
 

Public Member Functions

 SelectMemberIterator ()
 Default constructor. More...
 
 SelectMemberIterator (const base_iterator &i)
 Conversion from the base iterator. More...
 
 SelectMemberIterator (const SelectMemberIterator &other)
 Copy constructor. More...
 
reference operator* ()
 Dereference operator. More...
 
const reference operator* () const
 Constant dereference operator. More...
 
pointer operator-> ()
 Pointer-like arrow operator. More...
 
const pointer operator-> () const
 Pointer-like constant arrow operator. More...
 
- Public Member Functions inherited from mgx::BaseIterator< Iterator, SelectMemberIterator< Iterator, T, member, T &, T * > >
 BaseIterator ()
 Default constructor. More...
 
 BaseIterator (const base_iterator &i)
 Conversion from the base iterator. More...
 
 BaseIterator (const BaseIterator &other)
 Copy constructor. More...
 
bool operator== (const SelectMemberIterator< Iterator, T, member, T &, T * > &other) const
 
bool operator!= (const SelectMemberIterator< Iterator, T, member, T &, T * > &other) const
 
SelectMemberIterator< Iterator, T, member, T &, T * > & operator= (const SelectMemberIterator< Iterator, T, member, T &, T * > &copy)
 Assignment operator. More...
 
SelectMemberIterator< Iterator, T, member, T &, T * > & operator++ ()
 Prefix increment operator. More...
 
SelectMemberIterator< Iterator, T, member, T &, T * > & operator++ (int)
 Postfix increment operator. More...
 
SelectMemberIterator< Iterator, T, member, T &, T * > & operator-- ()
 Prefix decrement operator. More...
 
SelectMemberIterator< Iterator, T, member, T &, T * > & operator-- (int)
 Postfix decrement operator. More...
 
SelectMemberIterator< Iterator, T, member, T &, T * > & operator+= (difference_type n)
 In-place random increment operator. More...
 
SelectMemberIterator< Iterator, T, member, T &, T * > & operator-= (difference_type n)
 In-place random decrement operator. More...
 
bool operator< (const SelectMemberIterator< Iterator, T, member, T &, T * > &other) const
 
bool operator> (const SelectMemberIterator< Iterator, T, member, T &, T * > &other) const
 
bool operator<= (const SelectMemberIterator< Iterator, T, member, T &, T * > &other) const
 
bool operator>= (const SelectMemberIterator< Iterator, T, member, T &, T * > &other) const
 
base_iterator base () const
 Direct access to the base iterator. More...
 

Additional Inherited Members

- Protected Attributes inherited from mgx::BaseIterator< Iterator, SelectMemberIterator< Iterator, T, member, T &, T * > >
base_iterator it
 Underlying iterator. More...
 

Detailed Description

template<class Iterator, class T, T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
class mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >

Iterate over a container of structure, dereferencing only a member of it.

This iterator is used when iterating over a container of a complexe structure. It allows for dereferencing only a member of that structure. A typical example is iterating over a map but dereferencing either the key or the value:

std::map<int,double> my_map;
typedef std::map<int,double>::iterator map_iterator;
typedef std::map<int,double>::value_type map_value;
SelectMemberIterator<map_iterator,const int, &map_value::first> key_iterator;
SelectMemberIterator<map_iterator,int,&map_value::second> data_iterator;
SelectMemberIterator<map_iterator,int,&map_value::second,const int&, const int*> data_const_iterator;
// Fill in my_map
for(key_iterator it = my_map.begin() ; it != my_map.end() ; ++it)
{
cout << *it << endl; // Output the keys !
}
for(data_iterator it = my_map.begin() ; it != my_map.end() ; ++it)
{
*it += 5;
cout << *it << endl; // Output the data !
}
for(data_const_iterator it = my_map.begin() ; it != my_map.end() ; ++it)
{
// It is not possible to modify the value pointed
cout << *it << endl; // Output the data !
}

Definition at line 229 of file MemberIterator.hpp.

Member Typedef Documentation

◆ base_iterator

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
typedef Iterator mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::base_iterator

Type of the underlying iterator.

Definition at line 238 of file MemberIterator.hpp.

◆ difference_type

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
typedef std::iterator_traits<Iterator>::difference_type mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::difference_type

Type of the difference between two iterators.

Definition at line 250 of file MemberIterator.hpp.

◆ iterator_category

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
typedef std::iterator_traits<Iterator>::iterator_category mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::iterator_category

Category of the iterator.

Definition at line 242 of file MemberIterator.hpp.

◆ pointer

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
typedef Pointer mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::pointer

Type of a pointer on the values.

Definition at line 258 of file MemberIterator.hpp.

◆ reference

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
typedef Reference mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::reference

Type of a reference on the values.

Definition at line 254 of file MemberIterator.hpp.

◆ Super

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
typedef BaseIterator<Iterator, SelectMemberIterator<Iterator, T, member, Reference, Pointer> > mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::Super

Type of the base class.

Definition at line 234 of file MemberIterator.hpp.

◆ value_type

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
typedef T mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::value_type

Type of the value iterated on.

Definition at line 246 of file MemberIterator.hpp.

Constructor & Destructor Documentation

◆ SelectMemberIterator() [1/3]

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::SelectMemberIterator ( )
inline

Default constructor.

Definition at line 263 of file MemberIterator.hpp.

◆ SelectMemberIterator() [2/3]

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::SelectMemberIterator ( const base_iterator i)
inline

Conversion from the base iterator.

Definition at line 269 of file MemberIterator.hpp.

◆ SelectMemberIterator() [3/3]

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::SelectMemberIterator ( const SelectMemberIterator< Iterator, T, member, Reference, Pointer > &  other)
inline

Copy constructor.

Definition at line 277 of file MemberIterator.hpp.

Member Function Documentation

◆ operator*() [1/2]

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
reference mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator* ( )
inline

Dereference operator.

Definition at line 285 of file MemberIterator.hpp.

◆ operator*() [2/2]

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
const reference mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator* ( ) const
inline

Constant dereference operator.

Definition at line 291 of file MemberIterator.hpp.

◆ operator->() [1/2]

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
pointer mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator-> ( )
inline

Pointer-like arrow operator.

Definition at line 298 of file MemberIterator.hpp.

◆ operator->() [2/2]

template<class Iterator , class T , T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
const pointer mgx::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator-> ( ) const
inline

Pointer-like constant arrow operator.

Definition at line 304 of file MemberIterator.hpp.


The documentation for this class was generated from the following file:
mgx::BaseIterator< Iterator, SelectMemberIterator< Iterator, T, member, T &, T * > >::it
base_iterator it
Underlying iterator.
Definition: MemberIterator.hpp:190