From 2ef24de87b91f0e71177b3190affb0263f09379b Mon Sep 17 00:00:00 2001 From: skachano Date: Tue, 29 Nov 2016 20:59:17 +0000 Subject: Got rid of the comparison of iterators of different ranges git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/relaxed-witness@1804 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: fb333a1b5ef20371393dfbf7a00a4fd73e3c92e7 --- .../include/gudhi/Active_witness/Active_witness.h | 3 --- .../gudhi/Active_witness/Active_witness_iterator.h | 15 +++++++-------- 2 files changed, 7 insertions(+), 11 deletions(-) (limited to 'src/Witness_complex') diff --git a/src/Witness_complex/include/gudhi/Active_witness/Active_witness.h b/src/Witness_complex/include/gudhi/Active_witness/Active_witness.h index fce7d3d1..debbd286 100644 --- a/src/Witness_complex/include/gudhi/Active_witness/Active_witness.h +++ b/src/Witness_complex/include/gudhi/Active_witness/Active_witness.h @@ -44,9 +44,6 @@ public: typedef Active_witness_iterator< ActiveWitness, Id_distance_pair, INS_iterator > iterator; typedef typename std::list Table; - Table end_element_table_ = {Id_distance_pair(-1,0)}; - typename Table::iterator end_pointer = end_element_table_.begin(); - Table nearest_landmark_table_; INS_range search_range_; INS_iterator iterator_last_; diff --git a/src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h b/src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h index ae051bea..dd1501c3 100644 --- a/src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h +++ b/src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h @@ -54,18 +54,17 @@ class Active_witness_iterator Active_witness *aw_; Pair_iterator lh_; // landmark handle - //INS_iterator iterator_last; - //INS_iterator iterator_end; + bool is_end_; // true only if the pointer is end and there are no more neighbors to add public: Active_witness_iterator(Active_witness* aw) - : aw_(aw), lh_(aw_->end_pointer) + : aw_(aw), lh_(aw_->nearest_landmark_table_.end()), is_end_(true) { } Active_witness_iterator(Active_witness* aw, Pair_iterator lh) - : aw_(aw), lh_(lh) - { + : aw_(aw), lh_(lh), is_end_(false) + { } private : @@ -77,7 +76,7 @@ private : bool equal(const Iterator& other) const { - return (lh_ == other.lh_); + return (is_end_ == other.is_end_) || (lh_ == other.lh_); } void increment() @@ -85,7 +84,7 @@ private : // if neighbor search is at its end, check if lh_++ is end if (aw_->iterator_last_ == aw_->iterator_end_) { if (lh_++ == aw_->nearest_landmark_table_.end()) { - lh_ = aw_->end_pointer; + is_end_ = true; return; } return; @@ -94,7 +93,7 @@ private : if (lh_->first == aw_->iterator_last_->first) { // if the next iterator is end, lh_it = end pointer if (++(aw_->iterator_last_) == aw_->iterator_end_) { - lh_ = aw_->end_pointer; + is_end_ = true; return; } else -- cgit v1.2.3