diff options
author | skachano <skachano@636b058d-ea47-450e-bf9e-a15bfbe3eedb> | 2017-01-20 17:10:45 +0000 |
---|---|---|
committer | skachano <skachano@636b058d-ea47-450e-bf9e-a15bfbe3eedb> | 2017-01-20 17:10:45 +0000 |
commit | ecc6aaf89753345a472aac89b73a2deff10cc26c (patch) | |
tree | 6cf318fda2bf3dfd9ff5afeac71d3f2254670348 /src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h | |
parent | db1398bcf173f372fc3ef7a410e4e72b0192f8cc (diff) |
Redesigned the whole Active_witness_iterator, still doesn't work
git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/branches/relaxed-witness@1978 636b058d-ea47-450e-bf9e-a15bfbe3eedb
Former-commit-id: 732862e9c29fc326b8ca4f5e6bb5f14945b0d924
Diffstat (limited to 'src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h')
-rw-r--r-- | src/Witness_complex/include/gudhi/Active_witness/Active_witness_iterator.h | 33 |
1 files changed, 21 insertions, 12 deletions
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 b0a88662..79d7fa87 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 @@ -63,8 +63,20 @@ public: } Active_witness_iterator(Active_witness* aw, Pair_iterator lh) - : aw_(aw), lh_(lh), is_end_(false) - { + : aw_(aw), lh_(lh) + { + is_end_ = false; + if (lh_ == aw_->nearest_landmark_table_.end()) { + if (aw_->iterator_next_ == aw_->iterator_end_) + is_end_ = true; + else { + aw_->nearest_landmark_table_.push_back(*aw_->iterator_next_); + lh_ = --aw_->nearest_landmark_table_.end(); + ++(aw_->iterator_next_); + } + } + else + lh_++; } private : @@ -84,21 +96,18 @@ private : // the neighbor search can't be at the end iterator of a list GUDHI_CHECK(!is_end_ && lh_ != aw_->nearest_landmark_table_.end(), std::logic_error("Wrong active witness increment.")); // if the id of the current landmark is the same as the last one - if (lh_->first == aw_->iterator_last_->first) { - // if the next iterator is end, lh_it = end pointer - INS_iterator next_it = aw_->iterator_last_; next_it++; - if (next_it == aw_->iterator_end_) { + + lh_++; + if (lh_ == aw_->nearest_landmark_table_.end()) { + if (aw_->iterator_next_ == aw_->iterator_end_) is_end_ = true; - return; - } else { - ++(aw_->iterator_last_); - aw_->nearest_landmark_table_.push_back(*(aw_->iterator_last_)); + aw_->nearest_landmark_table_.push_back(*aw_->iterator_next_); + lh_ = std::prev(aw_->nearest_landmark_table_.end()); + ++(aw_->iterator_next_); } } - lh_++; } - }; } |