...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::icl::interval_set — Implements a set as a set of intervals - merging adjoining intervals.
// In header: <boost/icl/interval_set.hpp> template<typename DomainT, ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT), ICL_INTERVAL(ICL_COMPARE) Interval = ICL_INTERVAL_INSTANCE(ICL_INTERVAL_DEFAULT, DomainT, Compare), ICL_ALLOC Alloc = std::allocator> class interval_set : public boost::icl::interval_base_set< interval_set< DomainT, Compare, Interval, Alloc >, DomainT, Compare, Interval, Alloc > { public: // types typedef interval_set< DomainT, Compare, Interval, Alloc > type; typedef interval_base_set< type, DomainT, Compare, Interval, Alloc > base_type; // The base_type of this class. typedef type overloadable_type; typedef type joint_type; typedef type key_object_type; typedef DomainT domain_type; // The domain type of the set. typedef DomainT codomain_type; // The codomaintype is the same as domain_type. typedef DomainT element_type; // The element type of the set. typedef interval_type segment_type; // The segment type of the set. typedef exclusive_less_than< interval_type > interval_compare; // Comparison functor for intervals. typedef exclusive_less_than< interval_type > key_compare; // Comparison functor for keys. typedef Alloc< interval_type > allocator_type; // The allocator type of the set. typedef Alloc< DomainT > domain_allocator_type; // allocator type of the corresponding element set typedef base_type::atomized_type atomized_type; // The corresponding atomized type representing this interval container of elements. typedef base_type::ImplSetT ImplSetT; // Container type for the implementation. typedef ImplSetT::key_type key_type; // key type of the implementing container typedef ImplSetT::value_type data_type; // data type of the implementing container typedef ImplSetT::value_type value_type; // value type of the implementing container typedef ImplSetT::iterator iterator; // iterator for iteration over intervals typedef ImplSetT::const_iterator const_iterator; // const_iterator for iteration over intervals enum @11 { fineness = = 1 }; // construct/copy/destruct interval_set(); interval_set(const interval_set &); template<typename SubType> explicit interval_set(const interval_base_set< SubType, DomainT, Compare, Interval, Alloc > &); explicit interval_set(const domain_type &); explicit interval_set(const interval_type &); interval_set(interval_set &&); template<typename SubType> interval_set & operator=(const interval_base_set< SubType, DomainT, Compare, Interval, Alloc > &); interval_set & operator=(interval_set); // public member functions typedef ICL_INTERVAL_TYPE(Interval, DomainT, Compare); typedef ICL_COMPARE_DOMAIN(Compare, DomainT); template<typename SubType> void assign(const interval_base_set< SubType, DomainT, Compare, Interval, Alloc > &); // private member functions iterator handle_inserted(iterator); iterator add_over(const interval_type &, iterator); iterator add_over(const interval_type &); };
interval_set
public
construct/copy/destructinterval_set();Default constructor for the empty object.
interval_set(const interval_set & src);Copy constructor.
template<typename SubType> explicit interval_set(const interval_base_set< SubType, DomainT, Compare, Interval, Alloc > & src);Copy constructor for base_type.
explicit interval_set(const domain_type & value);Constructor for a single element.
explicit interval_set(const interval_type & itv);Constructor for a single interval.
interval_set(interval_set && src);Move constructor.
template<typename SubType> interval_set & operator=(const interval_base_set< SubType, DomainT, Compare, Interval, Alloc > & src);Assignment operator for base type.
interval_set & operator=(interval_set src);Move assignment operator.
interval_set
public member functionstypedef ICL_INTERVAL_TYPE(Interval, DomainT, Compare);The interval type of the set.
typedef ICL_COMPARE_DOMAIN(Compare, DomainT);Comparison functor for domain values.
template<typename SubType> void assign(const interval_base_set< SubType, DomainT, Compare, Interval, Alloc > & src);Assignment from a base
interval_set
.