50 template<typename P_expr> class _bz_VecExpr;
52 template<typename P_numtype> class
Random;
56 template<typename P_numtype>
106 r.first() * vec.stride())
123 Vector(
int length, T_numtype firstValue, T_numtype delta)
128 for (
int i=0;
i < length; ++
i)
129 data_[
i] = firstValue +
i * delta;
132 template<
typename P_distribution>
141 template<
typename P_expr>
145 length_ = expr._bz_suggestLength();
166 (*this) = _bz_VecExpr<Range>(
r);
180 void assertUnitStride()
182 BZPRECONDITION(stride_ == 1);
187 T_constIterator
beginFast()
const {
return T_constIterator(*
this); }
189 T_vector copy()
const;
200 bool isUnitStride()
const
201 {
return stride_ == 1; }
212 void reference(T_vector&);
214 void resize(
int length);
216 void resizeAndPreserve(
int newLength);
221 {
return T_vector(*
this,
Range(length()-1,0,-1)); }
226 operator _bz_VecExpr<VectorIterConst<T_numtype> > ()
const
227 {
return _bz_VecExpr<VectorIterConst<T_numtype> >(beginFast()); }
235 int _bz_suggestLength()
const
238 bool _bz_hasFastAccess()
const
239 {
return stride_ == 1; }
241 T_numtype& _bz_fastAccess(
int i)
244 T_numtype _bz_fastAccess(
int i)
const
247 template<
typename P_expr,
typename P_updater>
248 void _bz_assign(P_expr, P_updater);
250 _bz_VecExpr<T_constIterator> _bz_asVecExpr()
const
251 {
return _bz_VecExpr<T_constIterator>(beginFast()); }
259 T_numtype operator()(
int i)
const
261 BZPRECONDITION(i < length_);
262 BZPRECONDITION(stride_ == 1);
270 BZPRECONDITION(i < length_);
271 BZPRECONDITION(stride_ == 1);
275 T_numtype operator[](
int i)
const
277 BZPRECONDITION(i < length_);
278 return data_[i * stride_];
283 BZPRECONDITION(i < length_);
284 return data_[i * stride_];
289 return T_vector(*
this, r);
294 return T_vector(*
this, r);
297 T_pick operator()(T_indexVector
i)
299 return T_pick(*
this, i);
302 T_pick operator[](T_indexVector
i)
304 return T_pick(*
this, i);
319 T_iterator getInitializationIterator()
320 {
return beginFast(); }
322 T_vector& initialize(T_numtype);
323 T_vector& operator+=(T_numtype);
324 T_vector& operator-=(T_numtype);
325 T_vector& operator*=(T_numtype);
326 T_vector& operator/=(T_numtype);
327 T_vector& operator%=(T_numtype);
328 T_vector& operator^=(T_numtype);
329 T_vector& operator&=(T_numtype);
330 T_vector& operator|=(T_numtype);
331 T_vector& operator>>=(
int);
332 T_vector& operator<<=(
int);
352 template<
typename P_numtype2> T_vector& operator<<=(const Vector<P_numtype2> &);
355 template<
typename P_expr> T_vector& operator=(_bz_VecExpr<P_expr>);
356 template<
typename P_expr> T_vector& operator+=(_bz_VecExpr<P_expr>);
357 template<
typename P_expr> T_vector& operator-=(_bz_VecExpr<P_expr>);
358 template<
typename P_expr> T_vector& operator*=(_bz_VecExpr<P_expr>);
359 template<
typename P_expr> T_vector& operator/=(_bz_VecExpr<P_expr>);
360 template<
typename P_expr> T_vector& operator%=(_bz_VecExpr<P_expr>);
361 template<
typename P_expr> T_vector& operator^=(_bz_VecExpr<P_expr>);
362 template<
typename P_expr> T_vector& operator&=(_bz_VecExpr<P_expr>);
363 template<
typename P_expr> T_vector& operator|=(_bz_VecExpr<P_expr>);
364 template<
typename P_expr> T_vector& operator>>=(_bz_VecExpr<P_expr>);
365 template<
typename P_expr> T_vector& operator<<=(_bz_VecExpr<P_expr>);
368 template<
typename P_numtype2>
370 template<
typename P_numtype2>
372 template<
typename P_numtype2>
374 template<
typename P_numtype2>
376 template<
typename P_numtype2>
378 template<
typename P_numtype2>
380 template<
typename P_numtype2>
382 template<
typename P_numtype2>
384 template<
typename P_numtype2>
386 template<
typename P_numtype2>
388 template<
typename P_numtype2>
389 T_vector& operator<<=(const VectorPick<P_numtype2> &);
392 T_vector& operator=(
Range);
393 T_vector& operator+=(
Range);
394 T_vector& operator-=(
Range);
395 T_vector& operator*=(
Range);
396 T_vector& operator/=(
Range);
397 T_vector& operator%=(
Range);
398 T_vector& operator^=(
Range);
399 T_vector& operator&=(
Range);
400 T_vector& operator|=(
Range);
401 T_vector& operator>>=(
Range);
402 T_vector& operator<<=(
Range);
405 template<
typename P_distribution>
407 template<
typename P_distribution>
409 template<
typename P_distribution>
411 template<
typename P_distribution>
413 template<
typename P_distribution>
415 template<
typename P_distribution>
417 template<
typename P_distribution>
419 template<
typename P_distribution>
421 template<
typename P_distribution>
440 template<
typename P_numtype>
441 ostream& operator<<(ostream& os, const Vector<P_numtype>& x);
443 template<
typename P_expr>
444 ostream& operator<<(ostream& os, _bz_VecExpr<P_expr> expr);
450 #include <blitz/vecexpr.h>
452 #include <blitz/vector.cc>
453 #include <blitz/vecio.cc>
455 #endif // BZ_VECTOR_H