Advertisement
Guest User

Untitled

a guest
Jun 15th, 2016
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.45 KB | None | 0 0
  1. template<typename SortPolicy,
  2.          template<typename TreeMetricType,
  3.                   typename TreeStatType,
  4.                   typename TreeMatType> class TreeType>
  5. class NSTypeClass
  6. {
  7. public:
  8.   using NSType = NeighborSearch<SortPolicy,
  9.   metric::EuclideanDistance,
  10.   arma::mat,
  11.   TreeType,
  12.   TreeType<metric::EuclideanDistance,
  13.       NeighborSearchStat<SortPolicy>,
  14.       arma::mat>::template DualTreeTraverser>;
  15. };
  16.  
  17. class TrainVisitor : public boost::static_visitor<void>
  18. {
  19.  private:
  20.    arma::mat&& referenceSet;
  21.    size_t leafSize;
  22.  
  23.    template<typename NSType>
  24.    void TrainLeaf(NSType* ns) const;
  25.  
  26.  public:      
  27.    //tree::KDTree
  28.    template<typename SortPolicy>
  29.    void operator()(typename NSTypeClass<SortPolicy,tree::KDTree>::NSType *ns) const
  30.    {
  31.      if (ns)
  32.        return TrainLeaf(ns);
  33.      throw std::runtime_error("no neighbor search model initialized");
  34.    }
  35.  
  36.    //tree::BallTree
  37.    template<typename SortPolicy>
  38.    void operator()(typename NSTypeClass<SortPolicy,tree::BallTree>::NSType *ns) const
  39.    {
  40.      if (ns)
  41.        return TrainLeaf(ns);
  42.      throw std::runtime_error("no neighbor search model initialized");
  43.    }//*/
  44.  
  45.    template<typename NSType>
  46.    void operator()(NSType *ns) const
  47.    {
  48.      if (ns)
  49.        return ns->Train(std::move(referenceSet));
  50.      throw std::runtime_error("no neighbor search model initialized");
  51.    }
  52.  
  53.    TrainVisitor(arma::mat&& referenceSet, const size_t leafSize);
  54. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement