00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef TNT_ARRAY1D_H
00023 #define TNT_ARRAY1D_H
00024
00025 #include <cstdlib>
00026 #include <iostream>
00027
00028 #ifdef TNT_BOUNDS_CHECK
00029 #include <assert.h>
00030 #endif
00031
00032
00033
00034
00035 namespace TNT
00036 {
00037
00061 template <class T>
00062 class Array1D
00063 {
00064
00065 private:
00066
00067
00068
00069 public:
00070
00071 typedef T value_type;
00072
00077
00078 Array1D();
00079
00080
00092 explicit Array1D(int n);
00093
00094
00095
00096
00105 Array1D(int n, const T &a);
00106
00107
00117 Array1D(int n, T *a);
00118
00119
00126 inline Array1D(const Array1D &A);
00127
00128
00129
00130
00150 inline operator T*();
00151
00171 inline operator const T*();
00172
00173
00177 inline Array1D & operator=(const T &a);
00178
00179
00183 inline Array1D & operator=(const Array1D &A);
00184
00185
00196 inline Array1D & ref(const Array1D &A);
00197
00198
00205 Array1D copy() const;
00206
00207
00208
00232 Array1D & inject(const Array1D & A);
00233
00234
00240 inline T& operator[](int i);
00241
00247 inline const T& operator[](int i) const;
00248
00249
00254 inline int dim1() const;
00255
00260 inline int dim() const;
00261
00262
00266 ~Array1D();
00267
00268
00269
00270
00271 };
00272
00273
00274 }
00275
00276 #endif
00277
00278