SHOGUN  4.1.0
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义  
range.h
浏览该文件的文档.
1 #ifndef __SG_RANGE_H__
2 #define __SG_RANGE_H__
3 
4 #include <shogun/lib/config.h>
5 #include <iterator>
6 
7 #ifdef HAVE_CXX11
8 namespace shogun
9 {
10 
19  template <typename T>
20  class Range
21  {
22  public:
29  Range(T rbegin, T rend) : m_begin(rbegin), m_end(rend)
30  {
31  }
32 
34  class Iterator : public std::iterator<std::input_iterator_tag, T>
35  {
36  public:
37  Iterator(T value) : m_value(value)
38  {
39  }
40  Iterator(const Iterator& other) : m_value(other.m_value)
41  {
42  }
43  Iterator(Iterator&& other) : m_value(other.m_value)
44  {
45  }
46  Iterator& operator=(const Iterator&) = delete;
47  Iterator& operator++()
48  {
49  m_value++;
50  return *this;
51  }
52  Iterator& operator++(int)
53  {
54  Iterator tmp(*this);
55  tmp++;
56  return tmp;
57  }
58  T operator*()
59  {
60  return m_value;
61  }
62  bool operator!=(const Iterator& other)
63  {
64  return this->m_value != other.m_value;
65  }
66  bool operator==(const Iterator& other)
67  {
68  return this->m_value == other.m_value;
69  }
70  private:
71  T m_value;
72  };
77  Iterator begin() const
78  {
79  return Iterator(m_begin);
80  }
85  Iterator end() const
86  {
87  return Iterator(m_end);
88  }
89  private:
91  T m_begin;
93  T m_end;
94  };
95 
104  template <typename T>
105  inline Range<T> range(T rend)
106  {
107  return Range<T>(0, rend);
108  }
109 
119  template <typename T>
120  inline Range<T> range(T rbegin, T rend)
121  {
122  return Range<T>(rbegin, rend);
123  }
124 
125 }
126 
127 #endif /* HAVE_CXX */
128 #endif /* __SG_RANGE_H__ */
all of classes and functions are contained in the shogun namespace
Definition: class_list.h:18

SHOGUN 机器学习工具包 - 项目文档