模板二维数组

来源:互联网 发布:ubuntu daemon 编辑:程序博客网 时间:2024/06/02 07:15
#include <iostream>#include <cassert>using namespace std;template <class T,size_t SIZE1,size_t SIZE2>class Array2D{public:    template<class T, size_t SIZE>    class Array1D{    public:        T& operator[](size_t index){            assert(index < SIZE2);            return m_a[index];        }        const T& operator[](size_t index)const{            assert(index < SIZE2);            return m_a[index];        }    private:        T m_a[SIZE];    };    Array1D<T, SIZE2>& operator[](size_t index){        assert(index < SIZE1);        return m_a1D[index];    }    const Array1D<T, SIZE2>& operator[](size_t index)const{        assert(index < SIZE1);        return m_a1D[index];    }private:    Array1D<T,SIZE2> m_a1D[SIZE1];};int main(){    int i = 900;    Array2D<int, 2, 2> a;    a[1][1] = 900;    a[0][0] = a[1][1];    cout << a[0][0] << endl;    const Array2D<int, 2, 2> b;     cout << b[1][1] << endl;    return 0;}