Given an ITER_IMP type that implements a minimal subset of an iterator interface, this template generates a complete iterator that meets all of the requirements of a "bidirectional iterator" in the C++ standard. If T is const-qualified, then the resulting type is a constant iterator. T shall not be a function, reference type or void. ITER_IMP must provide public operations so that, for objects i and j of type ITER_IMP, the following operations are supported: ` ITER_IMP i; default construction ITER_IMP j(i); copy construction i = j assignment ++i increment to next element --i decrement to previous element i == j // convertible to bool equality comparison *i // reference convertible to T& element access (dereference) `
Declared in <bslstl_bidirectionaliterator.h>
template<
class T,
class ITER_IMP,
class TAG_TYPE = std::bidirectional_iterator_tag>
class BidirectionalIterator
: public ForwardIterator<T, ITER_IMP, TAG_TYPE>
| Name | Description |
|---|---|
ForwardIterator<T, ITER_IMP, TAG_TYPE> | Given an ITER_IMP type that implements a minimal subset of an iterator interface, this template generates a complete iterator that meets all of the requirements of a "forward iterator" in the C++ standard. If T is const-qualified, then the resulting type is a const iterator. T shall not be a function, reference type or void. ITER_IMP must provide public operations so that, for objects i and j of type ITER_IMP, the following operations are supported: ` ITER_IMP i; Default construction ITER_IMP j(i); Copy construction i = j Assignment ++i Increment to next element i == j // convertible to bool Equality comparison *i // reference convertible to T& Element access (dereference) ` |
| Name | Description |
|---|---|
difference_type | Type of the distance between two iterators. |
iterator_category | Standard iterator category tag for bidirectional iterators. |
pointer | Pointer type for the iterator's element type. |
reference | Reference type for the iterator's element type. |
value_type | Type of the value obtained when dereferencing the iterator. |
| Name | Description |
|---|---|
BidirectionalIterator [constructor] | Constructors |
operator= | Assignment operators |
imp | imp overloads |
operator* | Return a reference to the current, modifiable element. The behavior is undefined if this iterator has the past-the-end value for an iterator over the underlying sequence. |
operator++ | Increment to the next element. Return a reference to this modifiable iterator. The behavior is undefined if, on entry, this iterator has the past-the-end value for an iterator over the underlying sequence. |
operator-- | Decrement to the previous element. Return a reference to this modifiable iterator. The behavior is undefined if, on entry, this iterator has the same value as an iterator the refers to the start of the underlying sequence. |
operator-> | Return a pointer to the current, modifiable element. The behavior is undefined if this iterator has the past-the-end value for an iterator over the underlying sequence. |
| Name | Description |
|---|---|
operator!= | Return true if the specified lhs iterator does not have the same value as the specified rhs iterator, and false otherwise. Two iterators do not have the same value if (1) they do not refer to the same element and (2) both do not have the past-the-end iterator value for the underlying sequence. The behavior is undefined unless both iterators refer to the same underlying sequence. |
operator!= | Return true if the specified lhs iterator does not have the same value as the specified rhs iterator, and false otherwise. Two iterators do not have the same value if (1) they do not refer to the same element and (2) both do not have the past-the-end iterator value for the underlying sequence. The behavior is undefined unless both iterators refer to the same underlying sequence. |
operator++ | Increment the specified iter to the next element. Return the previous value of iter. The behavior is undefined if, on entry, iter has the past-the-end value for an iterator of the underlying sequence. |
operator++ | Increment the specified iter to the next element. Return the previous value of iter. The behavior is undefined if, on entry, iter has the past-the-end value for an iterator of the underlying sequence. |
operator-- | Decrement the specified iter to the previous element. Return the previous value of iter. The behavior is undefined if, on entry, iter has the same value as an iterator to the start of the underlying sequence. |
operator== | Return true if the specified lhs iterator has the same value as the specified rhs iterator, and false otherwise. Two iterators have the same value if they refer to the same element, or both have the past-the- end value for the underlying sequence. The behavior is undefined unless both iterators refer to the same underlying sequence. |
operator== | Return true if the specified lhs iterator has the same value as the specified rhs iterator, and false otherwise. Two iterators have the same value if they refer to the same element, or both have the past-the- end value for the underlying sequence. The behavior is undefined unless both iterators refer to the same underlying sequence. |
| Name | Description |
|---|---|
RandomAccessIterator | Given an ITER_IMP type that implements a minimal subset of an iterator interface, this template generates a complete iterator that meets all of the requirements of a "random-access iterator" in the C++ standard. If T is const-qualified, then the resulting type is a const iterator. T shall not be a function, reference type or void. ITER_IMP must provide public operations so that, for objects i and j of type ITER_IMP and n of an integral type, the following operations are supported: ` ITER_IMP i; default construction ITER_IMP j(i); copy construction i = j assignment ++i increment to next element --i decrement to previous element i += n increment by n elements i -= n decrement by n elements j - i // convertible to ptrdiff_t distance from i to j i == j // convertible to bool equality comparison i < j // convertible to bool less-than comparison *i // reference convertible to T& element access (dereference) ` |