rheolef  6.5
vector_of_iterator.h
Go to the documentation of this file.
1 #ifndef _RHEO_VECTOR_OF_ITERATOR_H
2 #define _RHEO_VECTOR_OF_ITERATOR_H
4 namespace rheolef {
5 
6 template<class T>
8 : public std::vector<T*>
9 {
10 public:
11  typedef std::vector<T*> V;
12  typedef std::vector<const T*> CONST_V;
13  typedef T* value_type;
14  typedef const T* const_value_type;
15  typedef value_type* iterator;
18  typedef const value_type& const_reference;
19 #ifdef TODO
20  typedef value_type* reverse_iterator;
21 #endif // TODO
22  typedef typename V::size_type size_type;
23  typedef typename V::difference_type difference_type;
24 #ifdef TODO
25  typedef typename CONST_V::const_reference const_reference;
26 #endif // TODO
27 
28  explicit vector_of_iterator (size_type n = 0, const value_type& value = value_type ());
29 
30 #ifdef TODO
32 #endif // TODO
33 
34  size_type size() const;
35  iterator begin();
36  const_iterator begin() const;
37  const_iterator end () const;
38  iterator end ();
41 #ifdef TODO
42  const_reverse_iterator rbegin() const;
43  reverse_iterator rbegin();
44  const_reverse_iterator rend() const;
45  reverse_iterator rend();
46 public:
47  const_reference at (size_type n) const;
48  reference at (size_type n);
49  const_reference front () const;
50  reference front ();
51  const_reference back () const;
52  reference back ();
53 #endif // TODO
54 };
55 template<class T>
56 inline
58  size_type n,
59  const value_type& value)
60  : std::vector<value_type>(n,value)
61 {
62 }
63 #ifdef TODO
64 template<class T>
65 inline
67  const_iterator first,
68  const_iterator last)
69  : std::vector<T*>(first,last)
70 {
71 }
72 #endif // TODO
73 template<class T>
74 inline
77 {
78  return std::vector<value_type>::size();
79 }
80 template<class T>
81 inline
84 {
85  return get_pointer_from_iterator(std::vector<value_type>::begin());
86 }
87 template<class T>
88 inline
91 {
92  return const_iterator(get_pointer_from_iterator(std::vector<value_type>::begin()));
93 }
94 template<class T>
95 inline
98 {
99  return begin()+size();
100 }
101 template<class T>
102 inline
105 {
106  return begin()+size();
107 }
108 #ifdef TODO
109 template<class T>
110 inline
113 {
114  return get_pointer_from_iterator(std::vector<T>::rbegin());
115 }
116 template<class T>
117 inline
118 typename vector_of_iterator<T>::const_reverse_iterator
119 vector_of_iterator<T>::rbegin() const
120 {
121  return get_pointer_from_iterator(std::vector<T>::rbegin());
122 }
123 template<class T>
124 inline
125 typename vector_of_iterator<T>::reverse_iterator
126 vector_of_iterator<T>::rend()
127 {
128  return get_pointer_from_iterator(std::vector<T>::rend());
129 }
130 template<class T>
131 inline
132 typename vector_of_iterator<T>::const_reverse_iterator
133 vector_of_iterator<T>::rend() const
134 {
135  return get_pointer_from_iterator(std::vector<T>::rend());
136 }
137 #endif // TODO
138 
139 template<class T>
140 inline
141 typename vector_of_iterator<T>::const_reference
143 {
144  return *(begin()+i);
145 }
146 template<class T>
147 inline
150 {
151  return *(begin()+i);
152 }
153 #ifdef TODO
154 template<class T>
155 inline
158 {
159  return const_reference(std::vector<value_type>::operator[] (n));
160 }
161 template<class T>
162 inline
163 typename vector_of_iterator<T>::reference
164 vector_of_iterator<T>::at (size_type n)
165 {
166  return const_reference(std::vector<value_type>::operator[] (n));
167 }
168 template<class T>
169 inline
170 typename vector_of_iterator<T>::const_reference
171 vector_of_iterator<T>::front () const
172 {
173  return const_reference(std::vector<value_type>::front());
174 }
175 template<class T>
176 inline
177 typename vector_of_iterator<T>::reference
178 vector_of_iterator<T>::front ()
179 {
180  return const_reference(std::vector<value_type>::front());
181 }
182 template<class T>
183 inline
184 typename vector_of_iterator<T>::const_reference
185 vector_of_iterator<T>::back () const
186 {
187  return const_reference(std::vector<value_type>::back());
188 }
189 template<class T>
190 inline
191 typename vector_of_iterator<T>::reference
192 vector_of_iterator<T>::back ()
193 {
194  return const_reference(std::vector<value_type>::back());
195 }
196 #endif // TODO
197 } // namespace rheolef
198 #endif // _RHEO_VECTOR_OF_ITERATOR_H
199