From 0e574fc38658b23b25655991e9822fd42fff0890 Mon Sep 17 00:00:00 2001 From: glisse Date: Fri, 22 Dec 2017 17:03:33 +0000 Subject: Use contiguous_vertices in find_simplex(). git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/misc-glisse@3104 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: b8d7996b0c3a020d1b67003e4250e557c3cebee9 --- src/Simplex_tree/include/gudhi/Simplex_tree.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/Simplex_tree') diff --git a/src/Simplex_tree/include/gudhi/Simplex_tree.h b/src/Simplex_tree/include/gudhi/Simplex_tree.h index 0b8ad6b8..1a6a72a3 100644 --- a/src/Simplex_tree/include/gudhi/Simplex_tree.h +++ b/src/Simplex_tree/include/gudhi/Simplex_tree.h @@ -531,7 +531,20 @@ class Simplex_tree { Siblings * tmp_sib = &root_; Dictionary_it tmp_dit; Vertex_handle last = simplex.back(); - for (auto v : simplex) { + auto vi = simplex.begin(); + if (Options::contiguous_vertices) { + GUDHI_CHECK(contiguous_vertices(), "non-contiguous vertices"); + Vertex_handle v = *vi++; + if(v < 0 || v >= static_cast(root_.members_.size())) + return null_simplex(); + tmp_dit = root_.members_.begin() + v; + if (!has_children(tmp_dit) && v != last) { + return null_simplex(); + } + tmp_sib = tmp_dit->second.children(); + } + for (; vi != simplex.end(); ++vi) { + Vertex_handle v = *vi; tmp_dit = tmp_sib->members_.find(v); if (tmp_dit == tmp_sib->members_.end()) { return null_simplex(); -- cgit v1.2.3