MorphoGraphX
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | List of all members
mgx::util::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::util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >:

Public Types

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

Public Member Functions

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

Additional Inherited Members

- Protected Attributes inherited from mgx::util::BaseIterator< Iterator, SelectMemberIterator< Iterator, T, member, Reference, Pointer > >
base_iterator it
 Underlying iterator.
 

Detailed Description

template<class Iterator, class T, T std::iterator_traits< Iterator >::value_type::* member, class Reference = T&, class Pointer = T*>
class mgx::util::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 !
}

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