From: Wolfgang Bangerth Date: Sat, 10 Oct 2009 17:01:45 +0000 (+0000) Subject: Optimize construction of compressed index sets. X-Git-Tag: v8.0.0~6914 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1f3340f113cfd5d6b5eab9108781de832819a884;p=dealii.git Optimize construction of compressed index sets. git-svn-id: https://svn.dealii.org/trunk@19808 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/base/source/index_set.cc b/deal.II/base/source/index_set.cc index ec940c07cf..2519727d4c 100644 --- a/deal.II/base/source/index_set.cc +++ b/deal.II/base/source/index_set.cc @@ -122,7 +122,19 @@ IndexSet::compress () const // current range, so we'll // delete all of them const unsigned int old_index = *next_individual_index; - individual_indices.erase (next_individual_index); + + { + std::set::iterator + last_index = next_individual_index; + ++last_index; + while ((last_index != individual_indices.end()) + && + (*last_index < new_range.second)) + ++last_index; + + individual_indices.erase (next_individual_index, + last_index); + } next_individual_index = individual_indices.lower_bound (old_index); contiguous_ranges.erase (next_range);