28 #ifndef BZ_VECPICKITER_H
29 #define BZ_VECPICKITER_H
37 template<typename P_numtype>
44 : data_(x.vector().data()), index_(x.indexSet().data())
51 #ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
62 T_numtype operator[](
int i)
const
64 BZPRECONDITION(i < length_);
65 return data_[dataStride_ * index_[i * indexStride_]];
68 T_numtype& operator[](
int i)
70 BZPRECONDITION(i < length_);
71 return data_[dataStride_ * index_[i * indexStride_]];
77 int _bz_suggestLength()
const
80 bool isUnitStride()
const
81 {
return (dataStride_ == 1) && (indexStride_ == 1); }
83 bool _bz_hasFastAccess()
const
84 {
return isUnitStride(); }
86 T_numtype _bz_fastAccess(
int i)
const
88 return data_[index_[
i]];
91 T_numtype& _bz_fastAccess(
int i)
93 return data_[index_[
i]];
97 _bz_staticLengthCount = 0,
98 _bz_dynamicLengthCount = 1,
109 template<
typename P_numtype>
116 :
data_(x.vector().data()),
index_(x.indexSet().data())
123 #ifdef BZ_MANUAL_VECEXPR_COPY_CONSTRUCTOR
172 #endif // BZ_VECPICKITER_H