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>
00023 using namespace std;
00024
00025
00026 #include "mslio.h"
00027
00029
00030 template<class E> class MultiArray {
00032 vector<E> A;
00033
00035 vector<int> Offsets;
00036
00038 vector<int> Dimensions;
00039
00041 int Dimension;
00042
00044 int Size;
00045
00046 public:
00048 int MaxSize;
00049
00051 MultiArray(const vector<int> &dims, const E &x);
00052
00054 MultiArray(const vector<int> &dims);
00055
00057 MultiArray() {};
00058 ~MultiArray() {};
00059
00061 inline E& operator[](const vector<int> &indices);
00062
00064 inline bool Increment(vector<int> &indices);
00065
00067 friend istream& operator>> (istream &is, MultiArray &ma)
00068 { is >> ma.A; return is; }
00069
00071 friend ostream& operator<< (ostream &os, const MultiArray &ma)
00072 { os << ma.A; return os; }
00073 };
00074
00075
00076 #endif