Category: adaptors |
Component type: type |
The downcast_view
is a tranform_view
where the container elements are pointers or iterators and references
to only those objects of derived_type
are presented. The
properties of any downcast_view
instance depend on the
properties of the container template parameter. The
interface of downcast_view
adapts itself [1] to the
referenced container, if this is one of Container
provides a Container interface, a downcast_view
referencing Forward Containers
provides a Forward Container interface.
The downcast_view
presents transformed values, by
applying first a transformation of dynamic_cast<Derived_Type
*>
to the elements, the applying a transform
view with a transform of a downcast
and then appling a filter_view with a
filter of is_nonzero to remove the zero
elements, and then applying a polymorphic_view
with the operator*() transformation to the contents of the iterators.
This transformation and filtering is only applied in presenting the
elements, the container's elements themselves are not altered.
The properties of the order of elements are the same as those provided by the underlying container, as is the validity of more than one active iterators at any one time.
A downcast_view
owns its referenced container, if its
base template parameter is aggregated_ownership,
it merely
references its container, if the base template parameter is
referenced_ownership.
Parameter |
Description |
Default |
container |
The view's container type: the type of container referenced by this view |
|
|
The derived type of the objects in the container you are interested in. |
|
|
The view's const tag: either |
|
base |
The view's ownership type: the base class that determines if the view references or owns the container |
referenced_ownership |
Defined in the header downcast_view.hpp.
container::value_type
must have a operator*()
,
and be polymorphic with at least one virtual function. derived_type
must be a subclass of
std::iterator_traits<container::value_type>::value_type
for the downcast_view
to make any sense.
Member |
Where defined |
Description |
|
The type |
|
|
The type of the referenced container. |
|
|
Pointer to |
|
|
|
|
|
|
|
|
An unsigned integral type. |
|
|
A signed integral type. |
|
|
Iterator used to iterate through the view. |
|
|
Const iterator used to iterate through the view. |
|
|
Iterator used to iterate backwards through a container. |
|
|
Const iterator used to iterate backwards through a container. |
|
|
Returns an iterator pointing to the begin of the view. |
|
|
Returns an iterator pointing to the end of the view. |
|
|
Returns a const_iterator pointing to the begin of the view. |
|
|
Returns a const_iterator pointing to the end of the view. |
|
|
Valid for reversible
container's only. Returns a |
|
|
Valid for reversible
container's only. Returns a |
|
|
Valid for reversible
container's only. Returns a |
|
|
Valid for reversible
container's only. Returns a |
|
|
Returns the size of the view. |
|
|
Returns the largest possible size of the view. |
|
|
true if the view's size is 0. |
|
|
Creates an empty view. |
|
|
Creates a view of given container. |
|
|
Swaps the two views. Iterators are invalidated by this operation. For referencing views, the containers themselves are not swapped. |
|
|
Tests two views for equality. This is a global function, not a member function. Views may be equal even if their referenced containers are not. |
|
|
Lexicographical comparison. This is a global function, not a member function. |
VTL Home
Copyright
© 1999 Konrad-Zuse-Zentrum für Informationstechnik Berlin &
Gary Powell All Rights Reserved.