matrix.cpp

来自「矩阵类 简单的矩阵类的编写」· C++ 代码 · 共 107 行

CPP
107
字号
// Matrix.cpp: implementation of the Matrix class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Matrix.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Matrix::Matrix()
:m_nRow(0), m_nCol(0), m_pData(NULL)
{
}

Matrix::Matrix(int r, int c, float *p)
:m_nRow(r), m_nCol(c)
{
	int i, j;

	m_pData = new float*[r];
	for(i = 0;  i < r; i++)
		*(m_pData + i) = new float[c];
		// m_pData[i] = new float[c];
	
	int k = 0;
	for(i = 0; i < m_nRow; i++)
		for(j = 0; j < m_nCol; j++)
			m_pData[i][j] = p[k++];
			// *(*(m_pData + i)+j)=*(p+k++);
}


Matrix::~Matrix()
{
	if(m_pData)
	{
		for(int i = 0; i < m_nRow; i++)
			delete []m_pData[i];

		delete []m_pData;
		m_pData = NULL;
	}
}

void Matrix::PrintData()
{
	for(int i = 0; i <  m_nRow; i++)
	{
		for(int j = 0; j <  m_nCol; j++)
			cout << m_pData[i][j] << "  ";			
		cout << endl;
	}

	
}


float* Matrix::operator [](int i)
{
	return *(m_pData + i);
	//return m_pData[i];
}

Matrix Matrix::operator +(Matrix x)
{
	int i, j;
	Matrix result;
	result.m_nRow = m_nRow;
	result.m_nCol = m_nCol;
	result.m_pData = new float*[m_nRow];
	for(i = 0;  i < m_nRow; i++)
		*(result.m_pData + i) = new float[m_nCol];

	for(i = 0; i < m_nRow; i++)
		for(j = 0; j < m_nCol; j++)
			result.m_pData[i][j] = m_pData[i][j] + x.m_pData[i][j];

	return result;
}

Matrix Matrix::operator =(Matrix x)
{
	int i, j;
	this->m_nRow = x.m_nRow;
	this->m_nCol = x.m_nCol;
	if(m_pData)
	{
		for(int i = 0; i < m_nRow; i++)
			delete []m_pData[i];

		delete []m_pData;
		m_pData = NULL;
	}

	m_pData = new float*[m_nRow];
	for(i = 0;  i < m_nRow; i++)
		*(m_pData + i) = new float[m_nCol];
	
	for(i = 0; i < m_nRow; i++)
		for(j = 0; j < m_nCol; j++)
			m_pData[i][j] = x.m_pData[i][j];

	return *this;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?