BDE 4.14.0 Production release
|
Macros | |
#define | bslstl_RandomAccessIterator bslstl::RandomAccessIterator |
This alias is defined for backward compatibility. | |
Provide a template to create STL-compliant random access iterators.
Canonical header: bsl_iterator.h
This component provides an iterator adaptor that, given an implementation class defining a core set of iterator functionality specified in the class level documentation, adapts it to provide an STL-compliant random access iterator interface. bslstl::RandomAccessIterator
meets the requirements of a random access iterator described in the C++11 standard [24.2.7] under the tag "[random.access.iterators]". Include bsl_iterator.h to use this component.
In this section we show intended use of this component.
Suppose we want to create a standard compliant random access iterator for a container.
First, we define an iterator, MyArrayIterator
, that meets the requirements of the IMP_ITER
template parameter of RandomAccessIterator
class (see class level documentation), but does not meet the full set of requirements for a random access iterator as defined by the C++ standard. Note that the following shows only the public interface required. Private members and additional methods that may be needed to implement this class are elided in this example:
Notice that MyArrayIterator
does not implement a complete standard compliant random access iterator. It is missing methods such as operator+
and operator[]
.
Then, we define the interface for our container class template, MyFixedSizeArray
. The implementation of the interface is elided for brevity:
Now, we use RandomAccessIterator
to create a standard compliant iterator for this container:
Notice that the implementation for const_iterator
is MyArrayIterator<VALUE>
and not MyArrayIterator<const VALUE>
.
Next, we continue defining the rest of the class.
Then, we create a MyFixedSizeArray
and initialize its elements:
Finally, to show that MyFixedSizeArray::iterator
can be used as a random access iterator, we invoke a function that takes random iterators as parameters, such as std::sort
, on the begin
and end
iterators and verify the results:
#define bslstl_RandomAccessIterator bslstl::RandomAccessIterator |