Spatial C++ Library
Generic Multi-Dimensional Containers and Spatial Operations
|
This concept defines the requirements for objects to be used in nearest neighbor queries with the library's built-in metrics such as spatial::euclidian, spatial::quadrance or spatial::manhattan.
The models of Difference are used to calculate the difference between 2 keys along the same dimension. That difference is expressed in a Unit
chosen by the user. Very often, the difference consist in a simple substraction of the coordinates of 2 keys along the dimenion specified.
The models of Difference shall publicly provide the following interfaces:
Signature/Typedef | Description | |
Legend | D | A model of Difference |
Legend | K | The key type of a spatial container. |
Legend | Unit | The type unit chosen to express a difference. |
Require | Unit D::operator()(spatial::dimension_type dim, const K& x, const K& y) const | Returns the difference (or very often, the substraction) of x minus y along the dimension dim . |
If you have build your current container based on spatial::paren_less, spatial::bracket_less, spatial::iterator_less or spatial::accessor_less, and if you wish to use your container for nearest neighbor search, then you might not need to define a new Difference functor: the library will be able to deduce the right functor, based on the comparators used in the container.