#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 Object > | operator[] (size_t i) const |
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.