class TriGraph { struct Edge { Edge(cmph_uint32 v0, cmph_uint32 v1, cmph_uint32 v2); cmph_uint32 vertices[3]; }; struct ConnectedEdge { Edge current; Edge next; }; TriGraph(cmph_uint32 nedges, cmph_uint32 nvertices); void AddEdge(cmph_uint32 v0, cmph_uint32 v1, cmph_uint32 v2); void RemoveEdge(cmph_uint32 current_edge); void ExtractEdgesAndClear(vector* edges); private: cmph_uint32 nedges_; vector edges_; vector first_edge_; vector vertex_degree_; };