2D iterator used by sparse_table. More...
#include <ash/sparse_table.h>
Public Types | |
| typedef two_d_iterator | iterator |
| typedef Container::iterator | row_iterator |
| typedef Container::value_type | _tmp_vt |
| Apparently some versions of VC++ have trouble with two ::'s in a typename. | |
| typedef _tmp_vt::nonempty_iterator | col_iterator |
Iterator Traits | |
|
typedef std::bidirectional_iterator_tag | iterator_category |
| typedef _tmp_vt::value_type | value_type |
| typedef _tmp_vt::difference_type | difference_type |
| typedef _tmp_vt::reference | reference |
| typedef _tmp_vt::pointer | pointer |
Public Member Functions | |
| void | advance_past_end () |
Constructors/Destructors | |
We use the default copy constructor. We use the default destructor. | |
| two_d_iterator () | |
| Default constructor. | |
| two_d_iterator (row_iterator begin, row_iterator end, row_iterator curr) | |
| "Real" constructor. | |
| two_d_iterator (row_iterator begin, row_iterator end, row_iterator curr, col_iterator col) | |
| Constructor for starting at an arbitrary column. | |
Dereference Operators | |
| reference | operator* () const |
| pointer | operator-> () const |
Arithmetic Operators | |
| iterator & | operator++ () |
| Pre-increment. | |
| iterator | operator++ (int) |
| Post-increment. | |
| iterator & | operator-- () |
| Pre-decrement. | |
| iterator | operator-- (int) |
| Post-decrement. | |
Comparison Operators | |
We only define ==, != is defined in std::rel_ops. | |
| bool | operator== (const iterator &itr) const |
| Equality operator. | |
Public Attributes | |
| row_iterator | row_begin |
| row_iterator | row_end |
| row_iterator | row_current |
| col_iterator | col_current |
2D iterator used by sparse_table.
| Container | The container type we iterate through. |
This is a 2D iterator. You specify a begin and end over a list of containers. We iterate over each container by iterating over it. It's actually simple:
VECTOR.begin() VECTOR[0].begin() --------> VECTOR[0].end() ---,
| ________________________________________________/
| \_> VECTOR[1].begin() --------> VECTOR[1].end() -,
| ___________________________________________________/
v \_> ......
VECTOR.end()
It's impossible to do random access on one of these things in constant time, so it's just a bidirectional iterator.
Unfortunately, because we need to use this for a non-empty iterator, we use nonempty_begin() and nonempty_end() instead of begin() and end() (though only going across, not down).
| typedef Container::value_type ash::two_d_iterator< Container >::_tmp_vt |
Apparently some versions of VC++ have trouble with two ::'s in a typename.
| ash::two_d_iterator< Container >::two_d_iterator | ( | ) | [inline] |
Default constructor.
| ash::two_d_iterator< Container >::two_d_iterator | ( | row_iterator | begin, |
| row_iterator | end, | ||
| row_iterator | curr | ||
| ) | [inline] |
"Real" constructor.
| begin | The beginning of the range of rows. |
| end | The end of the range of rows. |
| curr | The current row. |
| ash::two_d_iterator< Container >::two_d_iterator | ( | row_iterator | begin, |
| row_iterator | end, | ||
| row_iterator | curr, | ||
| col_iterator | col | ||
| ) | [inline] |
Constructor for starting at an arbitrary column.
| begin | The beginning of the range of rows. |
| end | The end of the range of rows. |
| curr | The current row. |
| col | The current column. |
| iterator& ash::two_d_iterator< Container >::operator++ | ( | ) | [inline] |
Pre-increment.
| iterator ash::two_d_iterator< Container >::operator++ | ( | int | ) | [inline] |
Post-increment.
| iterator& ash::two_d_iterator< Container >::operator-- | ( | ) | [inline] |
Pre-decrement.
| iterator ash::two_d_iterator< Container >::operator-- | ( | int | ) | [inline] |
Post-decrement.
| bool ash::two_d_iterator< Container >::operator== | ( | const iterator & | itr | ) | const [inline] |
Equality operator.
© 2012
|
Licensed under
|
Hosted by
|
Generated by
1.7.4
|