bool operator()(const Simplex& s1, const Simplex& s2) const { if (s1.dimension() == s2.dimension()) return s1.get_value() < s2.get_value(); else return s1.dimension() < s2.dimension(); }
void add_cofaces (const Graph& graph, Simplex& tau, const Neighbors& neighbors, Complex& complex, const std::size_t dimension) { typedef typename Neighbors::const_iterator Neighbor_iterator; complex.insert_open_cell(tau); if(tau.dimension() >= dimension) { return; } Neighbors lower_neighbors; Neighbors final_neighbors; for(Neighbor_iterator i = neighbors.begin(); i != neighbors.end(); ++i){ lower_neighbors.clear(); Simplex sigma( tau); sigma.insert( *i); get_lower_neighbors(graph, *i, lower_neighbors); final_neighbors.clear(); set_intersection(lower_neighbors.begin(),lower_neighbors.end(), neighbors.begin(),neighbors.end(), back_inserter(final_neighbors)); add_cofaces(graph, sigma, final_neighbors, complex, dimension); } }