All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Pages
euclidean_metric.hpp
Go to the documentation of this file.
1 //=======================================================================
2 // Copyright (c) 2013 Piotr Wygocki
3 // 2014 Piotr Smulewicz
4 //
5 // Distributed under the Boost Software License, Version 1.0. (See
6 // accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8 //=======================================================================
16 #ifndef PAAL_EUCLIDEAN_METRIC_HPP
17 #define PAAL_EUCLIDEAN_METRIC_HPP
18 
21 
22 #include <cmath>
23 
24 namespace paal {
25 namespace data_structures {
26 
27 
29 template <typename T> struct euclidean_metric {
31  auto operator()(const std::pair<T, T> &p1, const std::pair<T, T> &p2) const
32  -> decltype(std::hypot(p1.first - p2.first, p1.second - p2.second)) {
33  return std::hypot(p1.first - p2.first, p1.second - p2.second);
34  }
35 };
36 
37 template <typename T>
39  : public _metric_traits<euclidean_metric<T>, std::pair<T, T>> {};
40 } // data_structures
41 
42 } // paal
43 
44 #endif // PAAL_EUCLIDEAN_METRIC_HPP
auto operator()(const std::pair< T, T > &p1, const std::pair< T, T > &p2) const -> decltype(std::hypot(p1.first-p2.first, p1.second-p2.second))
operator()
metric with euclidean distance