首页 > 编程语言 > 详细

写一个二维数组类 Array2

时间:2015-10-06 16:42:36      阅读:281      评论:0      收藏:0      [点我收藏+]
#include <iostream>
#include <cstring>
using namespace std;
class Array2{
private:
    int m, n;
    int** p;
public:
    Array2(int _m,int _n) 
    {
        m = _m;
        n = _n;
        p = new int*[m];
        for (int i = 0; i < m; i++)
        {
            p[i] = new int[n];
        }
    }
    Array2(){
        p = NULL;
    }
    Array2 &operator=(Array2 &array2){
        if (!p)
        {
            for (int i = 0; i < m; i++)
            {
                delete[] p[i];
            }
            delete[] p;
            m = array2.m;
            n = array2.n;
            p = new int*[m];
            for (int i = 0; i < m; i++)
            {
                p[i] = new int[n];
            }
        }
        else
        {
            m = array2.m;
            n = array2.n;
            p = new int*[m];
            for (int i = 0; i < m; i++)
            {
                p[i] = new int[n];
            }
        }
        for (int i = 0; i < m; i++)
        {
            memcpy(p[i], array2[i], n*sizeof(int));
        }
        return *this;
    }
    int *operator[](int i){
        return p[i];
    }
    int operator()(int i,int j){
        return p[i][j];
    }

};
int main() {
    Array2 a(3, 4);
    int i, j;
    for (i = 0; i < 3; ++i)
        for (j = 0; j < 4; j++)
            a[i][j] = i * 4 + j;
    for (i = 0; i < 3; ++i) {
        for (j = 0; j < 4; j++) {
            cout << a(i, j) << ",";
        }
        cout << endl;
    }
    cout << "next" << endl;
    Array2 b;     b = a;
    for (i = 0; i < 3; ++i) {
        for (j = 0; j < 4; j++) {
            cout << b[i][j] << ",";
        }
        cout << endl;
    }
    return 0;
}

 

写一个二维数组类 Array2

原文:http://www.cnblogs.com/zhangmaochen/p/4857207.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!