Rectangle Set¶
API Reference¶
-
template <typename _Key, typename _Value>
classrectangle_set
¶ Public Types
-
typedef _Key
key_type
¶
-
typedef _Value
value_type
¶
-
typedef inner_type::search_result_type
search_result_type
¶
Public Functions
-
rectangle_set
()¶
-
rectangle_set
(const rectangle_set &r)¶
-
~rectangle_set
()¶
-
rectangle_set &
operator=
(const rectangle_set &r)¶
-
bool
operator==
(const rectangle_set &r) const¶ Equality between two instances of rectangle_set is evaluated based on the stored rectangle instances; their pointer values and geometries.
-
bool
operator!=
(const rectangle_set &r) const¶
-
bool
insert
(key_type x1, key_type y1, key_type x2, key_type y2, value_type data)¶ Insert a new rectangle (and data associated with it) into the set. Note that insertion of duplicate data instance is not allowed. A data is considered a duplicate if its pointer value is identical to one of the data instances already stored within. Also note that the end point of a rectangle is non-inclusive; a rectangle of (x1,y1) - (x2,y2) means that the rectangle spans x1 <= x < x2 and y1 <= y < y2.
- Return
- true if a rectangle successfully inserted, false otherwise.
- Parameters
x1
: lower x coordinate of the rectangle. Inclusive.y1
: lower y coordinate of the rectangle. Inclusive.x2
: upper x coordinate of the rectangle. Non-inclusive.y2
: upper y coordinate of the rectangle. Non-inclusive.data
: pointer to data instance associated with this rectangle. Note that the caller is responsible for managing the life cycle of the data instance.
-
bool
search
(key_type x, key_type y, search_result_type &result)¶ Search and collect all rectangles that contains a given point.
- Return
- true if the search is successful, false otherwise.
- Parameters
x
: x coordinate of a query point.y
: y coordinate of a query point.result
: array of pointers to rectangle instances.
-
search_result
search
(key_type x, key_type y)¶ Search and collect all rectangles containing a given point.
- Return
- object containing the result of the search, which can be accessed via iterator.
- Parameters
x
: x coordinate of a query point.y
: y coordinate of a query point.
-
void
remove
(value_type data)¶ Remove a rectangle instance pointed to by a given pointer.
- Parameters
data
: pointer that points to the rectangle instance you wish to remove from the set.
-
void
clear
()¶ Clear all rectangles stored in the set.
-
size_t
size
() const¶ Return the number of rectangles currently stored in the set.
- Return
- number of stored rectangles.
-
bool
empty
() const¶ Check whether or not the set is empty.
- Return
- true if the set is empty, false otherwise.
-
class
search_result
: public mdds::segment_tree<_Key, _Value>::search_result_base¶ Most of the implementation of search_result and its iterator is in segment_tree since the iteration logic is identical & depends on the segment_tree internals.
Public Types
-
template<>
typedef inner_type::search_result_base::res_chains_typeres_chains_type
¶
-
template<>
typedef inner_type::search_result_base::res_chains_ptrres_chains_ptr
¶
-
template<>
typedef inner_type::data_chain_typedata_chain_type
¶
Public Functions
-
template<>
search_result
()¶
-
template<>
search_result
(const search_result &r)¶
-
template<>
search_result::iteratorbegin
()¶
-
template<>
search_result::iteratorend
()¶
-
class
iterator
: public mdds::segment_tree<_Key, _Value>::iterator_base¶ Public Functions
-
template<>
iterator
()¶
Friends
-
friend
mdds::rectangle_set::rectangle_set< _Key, _Value >::search_result
-
template<>
-
template<>
-
typedef _Key