1 #ifndef theplu_yat_utility_segment_set
2 #define theplu_yat_utility_segment_set
27 #include "SegmentTree.h"
29 #include "yat_assert.h"
45 template<
typename T,
class Compare = std::less<T> >
48 SegmentCompare<T, Compare> >,
50 Identity<const Segment<T, Compare>&> >
66 std::pair<typename me::iterator, typename me::iterator> p =
68 if (p.first==p.second) {
69 return this->
container_.insert(p.first, segment);
80 YAT_ASSERT(last==this->
end() || compare(segment, *last));
81 YAT_ASSERT(last!=this->
begin());
83 YAT_ASSERT(compare_3way(segment, *last)==0);
86 segment.begin(), comp),
87 std::max(last->end(), segment.end(), comp));
SegmentSet(void)
creates a set with no segments
Definition: SegmentSet.h:57
std::set< Segment< T, Compare >, SegmentCompare< T, Compare > >::iterator iterator
iterator
Definition: SegmentTree.h:88
std::set< Segment< T, Compare >, SegmentCompare< T, Compare > >::value_type value_type
value type is same as Container 's value_type.
Definition: SegmentTree.h:61
me::const_iterator insert_merge(const typename me::value_type &segment)
Definition: SegmentSet.h:64
T max(const T &a, const T &b, const T &c)
Definition: stl_utility.h:638
std::set< Segment< T, Compare >, SegmentCompare< T, Compare > >::const_iterator const_iterator
const_iterator
Definition: SegmentTree.h:90
const_iterator begin(void) const
Definition: SegmentTree.h:105
a set of Segments
Definition: SegmentSet.h:46
a class for a Segment or Interval
Definition: Segment.h:47
Base Class for SegmentSet and SegmentMap.
Definition: SegmentTree.h:45
std::pair< iterator, iterator > overlap_range(const key_type &segment)
Definition: SegmentTree.h:239
std::set< Segment< T, Compare >, SegmentCompare< T, Compare > > container_
underlying container
Definition: SegmentTree.h:232
const_iterator end(void) const
Definition: SegmentTree.h:130