cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
bfknn.hpp
Go to the documentation of this file.
1#pragma once
2
6
7namespace toolbox::pcl
8{
9
43template<typename Element, typename Metric = toolbox::metrics::L2Metric<typename Element::value_type>>
44class CPP_TOOLBOX_EXPORT bfknn_generic_t : public base_knn_generic_t<bfknn_generic_t<Element, Metric>, Element, Metric>
45{
46public:
49 using element_type = typename traits_type::element_type;
50 using metric_type = typename traits_type::metric_type;
51 using distance_type = typename traits_type::distance_type;
54 using value_type = typename Element::value_type;
55
56 bfknn_generic_t() = default;
57 ~bfknn_generic_t() = default;
58
63
69 std::size_t set_input_impl(const container_type& data);
70
76 std::size_t set_input_impl(const container_ptr& data);
77
82 void set_metric_impl(const metric_type& metric);
83
89 template<typename T = typename Element::value_type>
90 void set_metric_impl(std::shared_ptr<toolbox::metrics::IMetric<T>> metric);
91
97 template<typename T = typename Element::value_type>
98 void set_metric_impl(std::unique_ptr<toolbox::metrics::IMetric<T>> metric);
99
108 bool kneighbors_impl(const element_type& query,
109 std::size_t num_neighbors,
110 std::vector<std::size_t>& indices,
111 std::vector<distance_type>& distances);
112
121 bool radius_neighbors_impl(const element_type& query,
122 distance_type radius,
123 std::vector<std::size_t>& indices,
124 std::vector<distance_type>& distances);
125
126private:
127 container_ptr m_data;
128 metric_type m_compile_time_metric;
129 std::shared_ptr<toolbox::metrics::IMetric<typename Element::value_type>> m_runtime_metric;
130 bool m_use_runtime_metric = false;
131};
132
149template<typename DataType>
151
152} // namespace toolbox::pcl
153
Definition metric_factory.hpp:23
Definition vector_metrics.hpp:18
KNN算法的基类(CRTP模式) / Base class for KNN algorithms (CRTP pattern)
Definition base_knn.hpp:69
std::shared_ptr< container_type > container_ptr
Definition base_knn.hpp:76
std::vector< element_type > container_type
Definition base_knn.hpp:75
暴力K近邻搜索算法的通用实现 / Generic brute-force K-nearest neighbors search implementation
Definition bfknn.hpp:45
bfknn_generic_t & operator=(const bfknn_generic_t &)=delete
bfknn_generic_t(const bfknn_generic_t &)=delete
typename base_type::container_type container_type
Definition bfknn.hpp:52
typename Element::value_type value_type
Definition bfknn.hpp:54
bfknn_generic_t(bfknn_generic_t &&)=delete
typename traits_type::element_type element_type
Definition bfknn.hpp:49
typename traits_type::distance_type distance_type
Definition bfknn.hpp:51
typename traits_type::metric_type metric_type
Definition bfknn.hpp:50
typename base_type::container_ptr container_ptr
Definition bfknn.hpp:53
typename base_type::traits_type traits_type
Definition bfknn.hpp:48
bfknn_generic_t & operator=(bfknn_generic_t &&)=delete
Definition base_correspondence_generator.hpp:18
KNN算法的特征定义 / KNN algorithm traits definition.
Definition base_knn.hpp:23