// Initialize intervals, one for each unique attribute value void initialize_intervals(int dimIndex) { g_intervals.clear(); IntervalSet interval; TupleVec::iterator it = g_data.begin(), end = g_data.end(), next; int index = 0; for ( ; it != end; ++it, ++index) { next = it+1; // Add element (index) to interval interval.insert(index); bool insertInterval = (next == end) || ( (next->first)[dimIndex] != (it->first)[dimIndex] ); if (insertInterval) { // Insert interval into list if // (a) end of sequence or // (b) next element is not the same as current element g_intervals.push_back(interval); interval.clear(); } } // Debug print_all_intervals(); }