diff --git a/doc/counting_iterator.html b/doc/counting_iterator.html index 6949231..8faa043 100644 --- a/doc/counting_iterator.html +++ b/doc/counting_iterator.html @@ -3,7 +3,7 @@ - + Counting Iterator @@ -12,6 +12,7 @@ +

Counting Iterator

@@ -31,20 +32,19 @@ Railway Operation and Construction
Copyright David Abrahams, Jeremy Siek, and Thomas Witt 2003.
-
- +
@@ -54,15 +54,15 @@ are forwarded to the adapted object.

-

counting_iterator synopsis

+

counting_iterator synopsis

 template <
     class Incrementable
@@ -89,10 +89,10 @@ private:
     Incrementable m_inc; // exposition
 };
 
-

If the Difference argument is use_default then -difference_type is an unspecified signed integral -type. Otherwise difference_type is Difference.

-

iterator_category is determined according to the following +

If the Difference argument is use_default then +difference_type is an unspecified signed integral +type. Otherwise difference_type is Difference.

+

iterator_category is determined according to the following algorithm:

 if (CategoryOrTraversal is not use_default)
@@ -105,31 +105,31 @@ else
          iterator_traversal<Incrementable>::type, 
          Incrementable, const Incrementable&)
 
-
+
[Note: implementers are encouraged to provide an implementation of
-
operator- and a difference_type that avoids overflows in -the cases where std::numeric_limits<Incrementable>::is_specialized +
operator- and a difference_type that avoids overflows in +the cases where std::numeric_limits<Incrementable>::is_specialized is true.]
-

counting_iterator requirements

-

The Incrementable argument shall be Copy Constructible and Assignable.

-

If iterator_category is convertible to forward_iterator_tag -or forward_traversal_tag, the following must be well-formed:

+

counting_iterator requirements

+

The Incrementable argument shall be Copy Constructible and Assignable.

+

If iterator_category is convertible to forward_iterator_tag +or forward_traversal_tag, the following must be well-formed:

 Incrementable i, j;
 ++i;         // pre-increment
 i == j;      // operator equal
 
-

If iterator_category is convertible to -bidirectional_iterator_tag or bidirectional_traversal_tag, +

If iterator_category is convertible to +bidirectional_iterator_tag or bidirectional_traversal_tag, the following expression must also be well-formed:

 --i
 
-

If iterator_category is convertible to -random_access_iterator_tag or random_access_traversal_tag, +

If iterator_category is convertible to +random_access_iterator_tag or random_access_traversal_tag, the following must must also be valid:

 counting_iterator::difference_type n;
@@ -139,92 +139,92 @@ i < j;
 
-

counting_iterator models

-

Specializations of counting_iterator model Readable Lvalue +

counting_iterator models

+

Specializations of counting_iterator model Readable Lvalue Iterator. In addition, they model the concepts corresponding to the -iterator tags to which their iterator_category is convertible. -Also, if CategoryOrTraversal is not use_default then -counting_iterator models the concept corresponding to the iterator -tag CategoryOrTraversal. Otherwise, if -numeric_limits<Incrementable>::is_specialized, then -counting_iterator models Random Access Traversal Iterator. -Otherwise, counting_iterator models the same iterator traversal -concepts modeled by Incrementable.

-

counting_iterator<X,C1,D1> is interoperable with -counting_iterator<Y,C2,D2> if and only if X is -interoperable with Y.

+iterator tags to which their iterator_category is convertible. +Also, if CategoryOrTraversal is not use_default then +counting_iterator models the concept corresponding to the iterator +tag CategoryOrTraversal. Otherwise, if +numeric_limits<Incrementable>::is_specialized, then +counting_iterator models Random Access Traversal Iterator. +Otherwise, counting_iterator models the same iterator traversal +concepts modeled by Incrementable.

+

counting_iterator<X,C1,D1> is interoperable with +counting_iterator<Y,C2,D2> if and only if X is +interoperable with Y.

-

counting_iterator operations

+

counting_iterator operations

In addition to the operations required by the concepts modeled by -counting_iterator, counting_iterator provides the following +counting_iterator, counting_iterator provides the following operations.

-

counting_iterator();

-
abstract:

How would you fill up a vector with the numbers zero -through one hundred using std::copy()? The only iterator +through one hundred using std::copy()? The only iterator operation missing from builtin integer types is an -operator*() that returns the current value of the integer. +operator*() that returns the current value of the integer. The counting iterator adaptor adds this crucial piece of functionality to whatever type it wraps. One can use the counting iterator adaptor not only with integer types, but with any incrementable type.

-

counting_iterator adapts an object by adding an operator* that +

counting_iterator adapts an object by adding an operator* that returns the current value of the object. All other iterator operations are forwarded to the adapted object.

+

counting_iterator();

+
- + - +
Requires:Incrementable is Default Constructible.
Requires:Incrementable is Default Constructible.
Effects:Default construct the member m_inc.
Effects:Default construct the member m_inc.
-

counting_iterator(counting_iterator const& rhs);

- +

counting_iterator(counting_iterator const& rhs);

+
- +
Effects:Construct member m_inc from rhs.m_inc.
Effects:Construct member m_inc from rhs.m_inc.
-

explicit counting_iterator(Incrementable x);

- +

explicit counting_iterator(Incrementable x);

+
- +
Effects:Construct member m_inc from x.
Effects:Construct member m_inc from x.
-

reference operator*() const;

- +

reference operator*() const;

+
- +
Returns:m_inc
Returns:m_inc
-

counting_iterator& operator++();

- +

counting_iterator& operator++();

+
- + - +
Effects:++m_inc
Effects:++m_inc
Returns:*this
Returns:*this
-

counting_iterator& operator--();

- +

counting_iterator& operator--();

+
- + - +
Effects:--m_inc
Effects:--m_inc
Returns:*this
Returns:*this
-

Incrementable const& base() const;

- +

Incrementable const& base() const;

+
- +
Returns:m_inc
Returns:m_inc
@@ -232,12 +232,12 @@ operations.

template <class Incrementable> counting_iterator<Incrementable> make_counting_iterator(Incrementable x); - +
- +
Returns:An instance of counting_iterator<Incrementable> -with current constructed from x.
Returns:An instance of counting_iterator<Incrementable> +with current constructed from x.
@@ -245,8 +245,8 @@ with current constructed from

Example

This example fills an array with numbers and a second array with -pointers into the first array, using counting_iterator for both -tasks. Finally indirect_iterator is used to print out the numbers +pointers into the first array, using counting_iterator for both +tasks. Finally indirect_iterator is used to print out the numbers into the first array via indirection through the second array.

 int N = 7;
@@ -276,7 +276,7 @@ indirectly printing out the numbers from 0 to 7
 

The source code for this example can be found here.

- +