Iterate over a container of structure, dereferencing only a member of it. More...
#include <util/member_iterator.h>
Public Types | |
typedef Iterator | base_iterator |
Type of the underlying iterator. | |
typedef std::iterator_traits < Iterator >::difference_type | difference_type |
Type of the difference between two iterators. | |
typedef std::iterator_traits < Iterator > ::iterator_category | iterator_category |
Category of the iterator. | |
typedef Pointer | pointer |
Type of a pointer on the values. | |
typedef Reference | reference |
Type of a reference on the values. | |
typedef T | value_type |
Type of the value iterated on. | |
Public Member Functions | |
base_iterator | base () const |
Direct access to the base iterator. | |
SelectMemberIterator (const SelectMemberIterator &other) | |
Copy constructor. | |
SelectMemberIterator (const base_iterator &i) | |
Conversion from the base iterator. | |
SelectMemberIterator () | |
Default constructor. | |
1 - Forward/input iterator methods | |
bool | operator!= (const SelectMemberIterator &other) const |
const reference | operator* () const |
Constant dereference operator. | |
reference | operator* () |
Dereference operator. | |
SelectMemberIterator & | operator++ (int) |
Postfix increment operator. | |
SelectMemberIterator & | operator++ () |
Prefix increment operator. | |
const pointer | operator-> () const |
Pointer-like constant arrow operator. | |
pointer | operator-> () |
Pointer-like arrow operator. | |
SelectMemberIterator & | operator= (const SelectMemberIterator ©) |
Assignment operator. | |
bool | operator== (const SelectMemberIterator &other) const |
3 - Random access methods | |
SelectMemberIterator & | operator+= (difference_type n) |
In-place random increment operator. | |
SelectMemberIterator & | operator-= (difference_type n) |
In-place random decrement operator. | |
bool | operator< (const SelectMemberIterator &other) const |
bool | operator<= (const SelectMemberIterator &other) const |
bool | operator> (const SelectMemberIterator &other) const |
bool | operator>= (const SelectMemberIterator &other) const |
2 - Bidirectional iterator methods | |
SelectMemberIterator & | operator-- (int) |
Postfix decrement operator. | |
SelectMemberIterator & | operator-- () |
Prefix decrement operator. | |
Protected Attributes | |
base_iterator | it |
Underlying iterator. | |
Friends | |
Functions for random access iterators | |
SelectMemberIterator | operator+ (difference_type n, const SelectMemberIterator &it) |
SelectMemberIterator | operator+ (const SelectMemberIterator &it, difference_type n) |
difference_type | operator- (const SelectMemberIterator &last, const SelectMemberIterator &first) |
Distance between two iterators. | |
SelectMemberIterator | operator- (difference_type n, const SelectMemberIterator &it) |
SelectMemberIterator | operator- (const SelectMemberIterator &it, difference_type n) |
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; util::SelectMemberIterator<map_iterator,const int, &map_value::first> key_iterator; util::SelectMemberIterator<map_iterator,int,&map_value::second> data_iterator; util::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 51 of file member_iterator.h.
typedef Iterator util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::base_iterator |
Type of the underlying iterator.
Definition at line 56 of file member_iterator.h.
typedef std::iterator_traits<Iterator>::difference_type util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::difference_type |
Type of the difference between two iterators.
Definition at line 68 of file member_iterator.h.
typedef std::iterator_traits<Iterator>::iterator_category util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::iterator_category |
Category of the iterator.
Definition at line 60 of file member_iterator.h.
typedef Pointer util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::pointer |
Type of a pointer on the values.
Definition at line 76 of file member_iterator.h.
typedef Reference util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::reference |
Type of a reference on the values.
Definition at line 72 of file member_iterator.h.
typedef T util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::value_type |
Type of the value iterated on.
Definition at line 64 of file member_iterator.h.
util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::SelectMemberIterator | ( | ) | [inline] |
util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::SelectMemberIterator | ( | const base_iterator & | i | ) | [inline] |
Conversion from the base iterator.
Definition at line 86 of file member_iterator.h.
00087 : it(i) 00088 { }
util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::SelectMemberIterator | ( | const SelectMemberIterator< Iterator, T, member, Reference, Pointer > & | other | ) | [inline] |
base_iterator util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::base | ( | ) | const [inline] |
Direct access to the base iterator.
Definition at line 211 of file member_iterator.h.
References util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::it.
Referenced by graph::VVGraph< VertexContent, EdgeContent, compact >::clear(), graph::VVBiGraph< Vertex1Content, Vertex2Content, Edge1Content, Edge2Content_, compact >::clear(), graph::VVGraph< VertexContent, EdgeContent, compact >::erase(), graph::VVBiGraph< Vertex1Content, Vertex2Content, Edge1Content, Edge2Content_, compact >::erase(), graph::VVGraph< VertexContent, EdgeContent, compact >::eraseAllEdges(), graph::VVBiGraph< Vertex1Content, Vertex2Content, Edge1Content, Edge2Content_, compact >::eraseAllEdges(), graph::VVGraph< VertexContent, EdgeContent, compact >::eraseEdge(), and graph::VVBiGraph< Vertex1Content, Vertex2Content, Edge1Content, Edge2Content_, compact >::eraseEdge().
00211 { return it; }
const reference util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator* | ( | ) | const [inline] |
Constant dereference operator.
Definition at line 136 of file member_iterator.h.
reference util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator* | ( | ) | [inline] |
Dereference operator.
Definition at line 132 of file member_iterator.h.
SelectMemberIterator& util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator++ | ( | int | ) | [inline] |
Postfix increment operator.
Definition at line 127 of file member_iterator.h.
References util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::it.
00127 { SelectMemberIterator tmp(*this); ++it; return tmp; }
SelectMemberIterator& util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator++ | ( | ) | [inline] |
Prefix increment operator.
Definition at line 123 of file member_iterator.h.
References util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::it.
00123 { ++it; return *this; }
SelectMemberIterator& util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator+= | ( | difference_type | n | ) | [inline] |
In-place random increment operator.
Definition at line 165 of file member_iterator.h.
References util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::it.
00166 { it += n; return *this; }
SelectMemberIterator& util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator-- | ( | int | ) | [inline] |
Postfix decrement operator.
Definition at line 157 of file member_iterator.h.
References util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::it.
00157 { SelectMemberIterator tmp(*this); --it; return tmp; }
SelectMemberIterator& util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator-- | ( | ) | [inline] |
Prefix decrement operator.
Definition at line 153 of file member_iterator.h.
References util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::it.
00153 { --it; return *this; }
SelectMemberIterator& util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator-= | ( | difference_type | n | ) | [inline] |
In-place random decrement operator.
Definition at line 171 of file member_iterator.h.
References util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::it.
00172 { it -= n; return *this; }
const pointer util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator-> | ( | ) | const [inline] |
Pointer-like constant arrow operator.
Definition at line 145 of file member_iterator.h.
pointer util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator-> | ( | ) | [inline] |
Pointer-like arrow operator.
Definition at line 141 of file member_iterator.h.
SelectMemberIterator& util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator= | ( | const SelectMemberIterator< Iterator, T, member, Reference, Pointer > & | copy | ) | [inline] |
Assignment operator.
Definition at line 113 of file member_iterator.h.
References util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::it.
00114 { it = copy.it; return *this; }
difference_type operator- | ( | const SelectMemberIterator< Iterator, T, member, Reference, Pointer > & | last, | |
const SelectMemberIterator< Iterator, T, member, Reference, Pointer > & | first | |||
) | [friend] |
Distance between two iterators.
Definition at line 204 of file member_iterator.h.
base_iterator util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::it [protected] |
Underlying iterator.
Definition at line 217 of file member_iterator.h.
Referenced by util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::base(), util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator++(), util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator+=(), util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator--(), util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator-=(), and util::SelectMemberIterator< Iterator, T, member, Reference, Pointer >::operator=().