Rosetta
Classes | Namespaces
LowMemGraph.hh File Reference

A lower memory version of utility::graph::Graph with three key limitations. More...

#include <utility/graph/LowMemGraph.fwd.hh>
#include <platform/types.hh>
#include <utility/VirtualBase.hh>
#include <utility/assert.hh>
#include <utility/vector1.hh>
#include <vector>

Classes

class  utility::graph::LowMemEdgeListIter
 Non-const iterator for edges. More...
 
class  utility::graph::LowMemEdgeListConstIter
 Const iterator for edges. More...
 
class  utility::graph::LowMemNode
 An Node class for LowMemGraph. Will often be overriden @detail Be careful with this class! It doesn't use actual virtual functions. Never do this: LowMemNodeOP op = MyDerivedNodeOP() Instead, if you wish to use an owning pointer, you must do this: MyDerivedNodeOP op = MyDerivedNodeOP() More...
 
class  utility::graph::LowMemEdge
 An Edge class for LowMemGraph. Will often be overriden. @detail Be careful with this class! It doesn't use actual virtual functions. Never do this: LowMemEdgeOP op = MyDerivedEdgeOP() Instead, if you wish to use an owning pointer, you must do this: MyDerivedEdgeOP op = MyDerivedEdgeOP() More...
 
class  utility::graph::LowMemGraphBase
 Pure virtual baseclass that was required to avoid templating Edges and Nodes. More...
 
class  utility::graph::LowMemGraph< _LMNode, _LMEdge >
 A graph with low memory use and constant time edge insertion. Extensible. @detail For general use, use utility::graph::DefaultLowMemGraph. More...
 

Namespaces

 utility
 unresizable vector whose size is known at compile time, which may be allocated on the stack, and which indexes from 0.
 
 utility::graph
 

Detailed Description

A lower memory version of utility::graph::Graph with three key limitations.

  1. Due to std::vector::resize(), all of the LMEdge* can go invalid any time you call add_edge().
  2. This doesn't have constant time deletion (a definite design goal for utility::graph::Graph)
  3. Deleting an element doesn't actually delete it from memory
    Author
    Brian Coventry (bcov@.nosp@m.uw.e.nosp@m.du)