Rheolef  7.2
an efficient C++ finite element environment
 
Loading...
Searching...
No Matches
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
23//
24// vector_of_iterator returns:
25// iterator when begin()
26// const_iterator when begin() const
27// and so.
28//
30namespace rheolef {
31
32template<class T>
34: public std::vector<T*>
35{
36public:
37 typedef std::vector<T*> V;
38 typedef std::vector<const T*> CONST_V;
39 typedef T* value_type;
40 typedef const T* const_value_type;
45#ifdef TODO
46 // pointer do not have rbegin and rend with p++ that goes back...
47 typedef value_type* reverse_iterator;
48#endif // TODO
49 typedef typename V::size_type size_type;
50 typedef typename V::difference_type difference_type;
51#ifdef TODO
52 typedef typename CONST_V::const_reference const_reference;
53#endif // TODO
54
55 explicit vector_of_iterator (size_type n = 0, const value_type& value = value_type ());
56
57#ifdef TODO
59#endif // TODO
60
61 size_type size() const;
68#ifdef TODO
69 const_reverse_iterator rbegin() const;
70 reverse_iterator rbegin();
71 const_reverse_iterator rend() const;
72 reverse_iterator rend();
73public:
74 const_reference at (size_type n) const;
75 reference at (size_type n);
76 const_reference front () const;
77 reference front ();
78 const_reference back () const;
79 reference back ();
80#endif // TODO
81};
82template<class T>
83inline
85 size_type n,
86 const value_type& value)
87 : std::vector<value_type>(n,value)
88{
89}
90#ifdef TODO
91template<class T>
92inline
94 const_iterator first,
95 const_iterator last)
96 : std::vector<T*>(first,last)
97{
98}
99#endif // TODO
100template<class T>
101inline
104{
105 return std::vector<value_type>::size();
106}
107template<class T>
108inline
111{
112 return get_pointer_from_iterator(std::vector<value_type>::begin());
113}
114template<class T>
115inline
118{
119 return const_iterator(get_pointer_from_iterator(std::vector<value_type>::begin()));
120}
121template<class T>
122inline
125{
126 return begin()+size();
127}
128template<class T>
129inline
132{
133 return begin()+size();
134}
135#ifdef TODO
136template<class T>
137inline
140{
141 return get_pointer_from_iterator(std::vector<T>::rbegin());
142}
143template<class T>
144inline
145typename vector_of_iterator<T>::const_reverse_iterator
146vector_of_iterator<T>::rbegin() const
147{
148 return get_pointer_from_iterator(std::vector<T>::rbegin());
149}
150template<class T>
151inline
152typename vector_of_iterator<T>::reverse_iterator
153vector_of_iterator<T>::rend()
154{
155 return get_pointer_from_iterator(std::vector<T>::rend());
156}
157template<class T>
158inline
159typename vector_of_iterator<T>::const_reverse_iterator
160vector_of_iterator<T>::rend() const
161{
162 return get_pointer_from_iterator(std::vector<T>::rend());
163}
164#endif // TODO
165
166template<class T>
167inline
170{
171 return *(begin()+i);
172}
173template<class T>
174inline
177{
178 return *(begin()+i);
179}
180#ifdef TODO
181template<class T>
182inline
185{
186 return const_reference(std::vector<value_type>::operator[] (n));
187}
188template<class T>
189inline
191vector_of_iterator<T>::at (size_type n)
192{
193 return const_reference(std::vector<value_type>::operator[] (n));
194}
195template<class T>
196inline
198vector_of_iterator<T>::front () const
199{
200 return const_reference(std::vector<value_type>::front());
201}
202template<class T>
203inline
205vector_of_iterator<T>::front ()
206{
207 return const_reference(std::vector<value_type>::front());
208}
209template<class T>
210inline
212vector_of_iterator<T>::back () const
213{
214 return const_reference(std::vector<value_type>::back());
215}
216template<class T>
217inline
219vector_of_iterator<T>::back ()
220{
221 return const_reference(std::vector<value_type>::back());
222}
223#endif // TODO
224} // namespace rheolef
225#endif // _RHEO_VECTOR_OF_ITERATOR_H
field::size_type size_type
Definition branch.cc:430
const_reference operator[](size_type i) const
const_iterator begin() const
V::difference_type difference_type
std::vector< const T * > CONST_V
const_value_type *const const_iterator
vector_of_iterator(size_type n=0, const value_type &value=value_type())
const value_type & const_reference
Expr1::float_type T
Definition field_expr.h:230
This file is part of Rheolef.
std::iterator_traits< Iterator >::pointer get_pointer_from_iterator(Iterator iter)
STL namespace.