 |
OpendTect
6.6
|
Go to the documentation of this file.
36 template <
class T,
class IT>
70 inline T&
first() {
return v_.front(); }
71 inline const T&
first()
const {
return v_.front(); }
72 inline T&
last() {
return v_.back(); }
73 inline const T&
last()
const {
return v_.back(); }
74 inline IT
size()
const {
return (IT)v_.size();}
81 inline bool validIdx( IT i )
const {
return i>=0 && i<size();}
82 inline IT
indexOf(
const T&,
bool forward,IT start=-1)
const;
83 inline IT
count(
const T&)
const;
87 { v_ = v2.
v_;
return *
this; }
90 inline void insert( IT pos,
const T& val )
91 { v_.insert(v_.begin() + pos,val); }
93 { std::vector<T>().swap(v_); }
96 for ( IT i=size()-1; i!=-1; i-- )
97 {
if ( v_[i] == t ) {
remove(i);
return; } }
102 v_.erase( v_.begin() + i );
106 if ( i1 == i2 ) {
remove( i1 );
return; }
108 const IT sz = size();
109 if ( i1 >= sz )
return;
111 if ( i2 >= sz-1 ) i2 = sz-1;
112 v_.erase( v_.begin()+i1, v_.begin()+i2+1 );
117 { std::fill( v_.begin(), v_.end(), val ); }
118 inline void replace(
const T& val,
const T& newval )
119 { std::replace( v_.begin(), v_.end(), val, newval ); }
121 { v_.swap( oth.
v_ ); }
125 if ( t == aft || size() < 2 )
return;
126 IT tidx = -1; IT aftidx = -1;
127 for ( IT vidx=size()-1; vidx!=-1; vidx-- )
130 { tidx = vidx;
if ( aftidx != -1 )
break; }
131 if ( v_[vidx] == aft )
132 { aftidx = vidx;
if ( tidx != -1 )
break; }
134 if ( tidx == -1 || aftidx == -1 || tidx == aftidx )
return;
136 for ( IT vidx=tidx; vidx<aftidx; vidx++ )
137 swapElems( vidx, vidx+1 );
139 for ( IT vidx=tidx; vidx>aftidx+1; vidx-- )
140 swapElems( vidx, vidx-1 );
145 if ( size() < 2 )
return;
147 for ( IT vidx=size()-1; vidx!=-1; vidx-- )
148 if ( v_[vidx] == t ) { tidx = vidx;
break; }
149 for ( IT vidx=tidx; vidx>0; vidx-- )
150 swapElems( vidx, vidx-1 );
160 #define mExportVectorAccess(mod,tp,itp) \
161 template mExpClass(mod) std::allocator<tp>;\
162 template mExpClass(mod) std::_Vector_val<tp,std::allocator<tp> >;\
163 template mExpClass(mod) std::vector<tp>;\
164 template mExpClass(mod) VectorAccess<tp,itp>;\
167 template<
class T,
class IT>
inline
170 if ( sz<=v_.capacity() )
185 try { v_.reserve(sz); }
186 catch ( std::bad_alloc )
188 catch ( std::length_error )
195 template<
class T,
class IT>
inline
200 catch ( std::bad_alloc )
207 template<
class T,
class IT>
inline
210 const T lastelem = v_.back();
216 template<
class T,
class IT>
inline
219 try { v_.resize(sz,val); }
220 catch ( std::bad_alloc )
228 #define mImplOperator \
229 try { return v_.at(vidx); } \
230 catch ( std::out_of_range ) \
231 { DBG::forceCrash(true); } \
232 return v_[(typename std::vector<T>::size_type)vidx]
236 #define mImplOperator \
237 return v_[(typename std::vector<T>::size_type)vidx]
242 template<
class T,
class IT>
inline
249 template<
class T,
class IT>
inline
258 template<
class T,
class IT>
inline
263 typename std::vector<T>::const_iterator begit = v_.cbegin();
264 const typename std::vector<T>::const_iterator endit = v_.cend();
268 const typename std::vector<T>::const_iterator res =
273 return mCast( IT, res-v_.begin() );
276 typename std::vector<T>::const_reverse_iterator rebegit = v_.rbegin();
277 const typename std::vector<T>::const_reverse_iterator rendit = v_.rend();
280 const IT nrskipped = size()-1-start;
281 rebegit += nrskipped;
284 const typename impl_type::const_reverse_iterator res
289 return mCast( IT, rendit-res) - 1;
293 template<
class T,
class IT>
inline
296 return mCast( IT, std::count(v_.cbegin(),v_.end(),t) );
300 template<
class T,
class IT>
inline
304 return std::find( v_.cbegin(), endit, t ) != endit;
const_iterator cbegin() const
Definition: vectoraccess.h:50
idx_type getIdx(iterator it) const
Definition: vectoraccess.h:54
bool validIdx(IT i) const
Definition: vectoraccess.h:81
void moveAfter(const T &t, const T &aft)
Definition: vectoraccess.h:123
IT getCapacity() const
Definition: vectoraccess.h:77
IT count(const T &) const
Definition: vectoraccess.h:294
impl_type::iterator iterator
Definition: vectoraccess.h:45
Simple vector-based container simplifying index-based work.
Definition: vectoraccess.h:38
const_iterator end() const
Definition: vectoraccess.h:52
VectorAccess(IT n)
Definition: vectoraccess.h:60
size_type idx_type
Definition: vectoraccess.h:42
T & last()
Definition: vectoraccess.h:72
std::vector< T > impl_type
Definition: vectoraccess.h:44
const impl_type & vec() const
Definition: vectoraccess.h:66
const_iterator cend() const
Definition: vectoraccess.h:53
#define mImplOperator
Definition: vectoraccess.h:236
IT size_type
Definition: vectoraccess.h:41
const T & first() const
Definition: vectoraccess.h:71
idx_type getIdx(const_iterator it) const
Definition: vectoraccess.h:56
void remove(IT i1, IT i2)
Definition: vectoraccess.h:104
const BufferString * find(const BufferStringSet &, const char *)
bool remove(const char *)
impl_type v_
Definition: vectoraccess.h:155
T & operator[](IT)
Definition: vectoraccess.h:243
T object_type
Definition: vectoraccess.h:43
#define mClass(module)
Definition: commondefs.h:181
impl_type::const_iterator const_iterator
Definition: vectoraccess.h:46
void swap(VectorAccess &oth)
Definition: vectoraccess.h:120
bool push_back(const T &t)
Definition: vectoraccess.h:196
const T & operator[](IT) const
Definition: vectoraccess.h:250
bool isPresent(const T &) const
Definition: vectoraccess.h:301
iterator end()
Definition: vectoraccess.h:51
iterator begin()
Definition: vectoraccess.h:48
VectorAccess(IT n, const T &t)
Definition: vectoraccess.h:61
void replace(const T &val, const T &newval)
Definition: vectoraccess.h:118
#define mCast(tp, v)
Definition: commondefs.h:137
VectorAccess(const VectorAccess &v2)
Definition: vectoraccess.h:63
T pop_back()
Definition: vectoraccess.h:208
void erase(const T &t)
Definition: vectoraccess.h:94
void swap(BufferStringSet &o1, BufferStringSet &o2)
Definition: bufstringset.h:154
VectorAccess()
Definition: vectoraccess.h:59
void remove(IT i)
Definition: vectoraccess.h:99
void swapElems(IT i, IT j)
Definition: vectoraccess.h:114
impl_type & vec()
Definition: vectoraccess.h:65
void erase()
Definition: vectoraccess.h:92
IT size() const
Definition: vectoraccess.h:74
void insert(IT pos, const T &val)
Definition: vectoraccess.h:90
void moveToStart(const T &t)
Definition: vectoraccess.h:143
bool setSize(IT sz, T val)
Definition: vectoraccess.h:217
const T & last() const
Definition: vectoraccess.h:73
bool setCapacity(IT sz, bool withmargin)
Definition: vectoraccess.h:168
void fillWith(const T &val)
Definition: vectoraccess.h:116
T & first()
Definition: vectoraccess.h:70
IT indexOf(const T &, bool forward, IT start=-1) const
Definition: vectoraccess.h:259
const_iterator begin() const
Definition: vectoraccess.h:49
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021