summaryrefslogtreecommitdiff
path: root/src/Simplex_tree/include/gudhi/Simplex_tree.h
diff options
context:
space:
mode:
authorglisse <glisse@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2017-12-22 17:03:33 +0000
committerglisse <glisse@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2017-12-22 17:03:33 +0000
commit0e574fc38658b23b25655991e9822fd42fff0890 (patch)
tree7483b59240503dcf6d34d6ab68589c9fa59d2be8 /src/Simplex_tree/include/gudhi/Simplex_tree.h
parent95cbbd98a9b1dcec7142f1b45555991cf0f94b70 (diff)
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
Diffstat (limited to 'src/Simplex_tree/include/gudhi/Simplex_tree.h')
-rw-r--r--src/Simplex_tree/include/gudhi/Simplex_tree.h15
1 files changed, 14 insertions, 1 deletions
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<Vertex_handle>(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();