MeshLib C++ Docs
Loading...
Searching...
No Matches

#include <MRMesh/MRConstChildren.h>

Classes

class  Iterator
 dereferences to std::shared_ptr<const Object>, constructed on each dereference More...

Public Types

using Storage = std::vector<std::shared_ptr<Object>>

Public Member Functions

 ConstChildren (const Storage &children)
MR_BIND_IGNORE_PY Iterator begin () const
MR_BIND_IGNORE_PY Iterator end () const
bool empty () const
size_t size () const
std::shared_ptr< const Objectoperator[] (size_t i) const

Detailed Description

read-only access to the children of an Object, as returned by Object::constChildren()

Object stores its children as std::shared_ptr<Object>, and a const Object cannot hand them out directly without either dropping constness or copying the whole vector. This class solves that: it is a lightweight non-owning view on the object's children, which produces std::shared_ptr<const Object> on the fly. Typical use:

for ( const auto & child : obj.constChildren() )
    processRecursively( *child );

It is also indexable, so a plain loop works too:

for ( size_t i = 0; i < obj.constChildren().size(); ++i )
    process( *obj.constChildren()[i] );

The view refers to the object's own storage, so use it as a temporary and do not store it: it is invalidated by anything that adds, removes or reorders the object's children, exactly like an iterator of the underlying vector.


The documentation for this class was generated from the following file: