00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _Matrix_cvector_h_
00026 #define _Matrix_cvector_h_
00027
00028
00029
00030 #include <math.h>
00031 #include "vector.h"
00032
00033 namespace PLib {
00034
00047 template<class T> class CVector : public Vector<T>
00048 {
00049 public:
00050 CVector() : Vector<T>(), index(0) {;}
00051 CVector(const int r) : Vector<T>(r), index(0) {;}
00052 CVector(const CVector<T>& v) : Vector<T>(v), index(v.index) {;}
00053 CVector(const Vector<T>& v) : Vector<T>(v), index(0) {;}
00054 CVector(const BasicArray<T>& v) : Vector<T>(v), index(0) {;}
00055 virtual ~CVector() {}
00056
00057 T& operator[](const int i) { return x[i%sze]; }
00058 T operator[](const int i) const { return x[i%sze]; }
00059
00060 void put(T v) { x[index] = v ; index = (index+1)%sze; }
00061
00062 protected:
00063 int index ;
00064
00065 };
00066
00067 }
00068
00069 typedef PLib::CVector<int> CVector_INT ;
00070 typedef PLib::CVector<char> CVector_BYTE ;
00071 typedef PLib::CVector<float> CVector_FLOAT ;
00072 typedef PLib::CVector<double> CVector_DOUBLE ;
00073 typedef PLib::CVector<unsigned char> CVector_UBYTE ;
00074
00075 #endif