1#ifndef KNNCOLLE_MATRIX_HPP
2#define KNNCOLLE_MATRIX_HPP
7#include "sanisizer/sanisizer.hpp"
21template<
typename Data_>
46 virtual const Data_*
next() = 0;
58template<
typename Index_,
typename Data_>
89 virtual std::unique_ptr<MatrixExtractor<Data_> >
new_extractor()
const = 0;
106template<
typename Data_>
107class SimpleMatrixExtractor final :
public MatrixExtractor<Data_> {
109 SimpleMatrixExtractor(
const Data_* data, std::size_t dim) : my_data(data), my_dim(dim) {}
112 const Data_* my_data;
117 const Data_* next() {
118 return my_data + sanisizer::product_unsafe<std::size_t>(at++, my_dim);
134template<
typename Index_,
typename Data_>
147 std::size_t my_num_dim;
149 const Data_* my_data;
168 return std::make_unique<SimpleMatrixExtractor<Data_> >(my_data, my_num_dim);
Interface for matrix data.
Definition Matrix.hpp:59
virtual std::size_t num_dimensions() const =0
virtual std::unique_ptr< MatrixExtractor< Data_ > > new_extractor() const =0
auto new_known_extractor() const
Definition Matrix.hpp:98
virtual Index_ num_observations() const =0
Simple wrapper for an in-memory matrix.
Definition Matrix.hpp:135
std::size_t num_dimensions() const
Definition Matrix.hpp:156
std::unique_ptr< MatrixExtractor< Data_ > > new_extractor() const
Definition Matrix.hpp:160
Index_ num_observations() const
Definition Matrix.hpp:152
auto new_known_extractor() const
Definition Matrix.hpp:167
SimpleMatrix(std::size_t num_dimensions, Index_ num_observations, const Data_ *data)
Definition Matrix.hpp:143
Collection of KNN algorithms.
Definition Bruteforce.hpp:29