00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MSL_MARRAY_H
00020 #define MSL_MARRAY_H
00021
00022 #include <vector.h>
00023
00024
00026
00027 template<class E> class MultiArray {
00029 vector<E> A;
00030
00032 vector<int> Offsets;
00033
00035 vector<int> Dimensions;
00036
00038 int Dimension;
00039
00041 int Size;
00042
00043 public:
00045 int MaxSize;
00046
00048 MultiArray(const vector<int> &dims, const E &x);
00049
00051 MultiArray(const vector<int> &dims);
00052
00054 MultiArray() {};
00055 ~MultiArray() {};
00056
00058 inline E& operator[](const vector<int> &indices);
00059
00061 inline bool Increment(vector<int> &indices);
00062
00064 friend istream& operator>> (istream &is, MultiArray &ma)
00065 { is >> ma.A; return is; }
00066
00068 friend ostream& operator<< (ostream &os, const MultiArray &ma)
00069 { os << ma.A; return os; }
00070 };
00071
00072
00073 #endif