#include #include #include #include #include #include #include #include #include /// Forward declarations. template class ID3; template class ID3Train; /// Number of attributes in each sample. constexpr size_t N = 4; /// Floating point error. constexpr float EPS = 1e-7; /** * A single sample with attributes & target class. */ template struct Sample { Sample() { } Sample(Sample &&sample) : attributes(std::move(sample.attributes)) , clazz(std::move(sample.clazz)) { } void operator = (Sample &&sample) { attributes = std::m