Ptrlists work a bit like std::vector<objref>
-- objrefs can be
added with Ptrlist::push_back()
, indexed with standard array
indexing Ptrlist::operator[]
, and iterated over in the usual
way with Ptrlist::iterator
. However, unlike
std::vector<objref>
, only pointers to the objref is stored
within Ptrlist
, not copies.
Synopsis:
class Ptrlist { public: class iterator { public: objref& operator*(); objref* operator->(); iterator operator++(); iterator operator--(); iterator operator++(int); iterator operator--(int); bool operator==(const iterator& x); bool operator!=(const iterator& x); }; iterator begin() const; iterator end() const; objref & front () objref & back () unsigned size() const; objref& operator[](unsigned i) const; void push_back(objref* x); void push_back(objref& x); void erase(GraphID_t i); void clear(); Ptrlist& operator=(const Ptrlist &x); };
Ptrlists can only refer to objects stored in objectMap. Ptrlists can be serialised -- Ptrlists must be unpacked within the context of an omapthe objectMap.
If you need to use a backing map, you can declare another omap object and assign objectMap to it. This will create copies of all the objects contained within objectMap.