乙個簡單的Matrix實現

2021-04-21 23:31:07 字數 2652 閱讀 5093

我們直接來看**吧:

/*    matrix.h    */

#pragma once

#include 

using

namespace std;

//矩陣類

class matrix;

下面是實現和測試的**:

/*    matrix.cpp    */

#include "matrix.h"

#include 

#include 

matrix::matrix(void)

matrix::matrix(long n)}}

matrix::matrix(double * arraddress,long arrwidth)

}width=arrwidth;

height=arrheight;

}matrix::matrix(double * arraddress,long arrwidth,long arrheight)

}width=arrwidth;

height=arrheight;

}matrix::matrix(const matrix & m)//copy constructor }}

long matrix::getwidth()

long matrix::getheight()

bool matrix::isvector()

matrix matrix::submatrix(long offset)

}matrix m(t,offset,offset);

delete  t;

return m;

}double matrix::arg()//矩陣的行列式 }}

for(i=0;i

for(long j=0;j

if(i==j) result*=m[i][j];}}

return result;

}bool matrix::isptv()

}return result;

}matrix  matrix::t()

}matrix m(t,height,width);

delete  t;

return m;

}matrix matrix::operator +(matrix &m1)

}matrix m(t,tmpwidth,tmpheight);

delete  t;

return m;

}matrix matrix::operator -(matrix &m1)

}matrix m(t,tmpwidth,tmpheight);

delete  t;

return m;

}matrix matrix::operator *(matrix &m1)

else

if(this->isvector() && !m1.isvector())else

if(!this->isvector() && m1.isvector())else

if(this->isvector() && m1.isvector() && width==m1.height)

*(t+m1.width*i+j)=sum;}}

matrix m(t,m1.width,height);

delete  t;

return m;

}else

}matrix operator*(double alpha,matrix & m1)

}return m;

}matrix matrix::operator*(double alpha)

matrix matrix::operator+=(matrix & m)

matrix matrix::operator-=(matrix & m)

matrix matrix::operator *=(double alpha)

matrix sqrt(matrix m)

double abs(matrix & m)

}return sqrt(sum);

}matrix matrix::operator /(matrix &m1)

matrix matrix::operator /(double sub)

}return m;

}matrix & matrix::operator =(matrix & m)

}return *this;

}double * matrix::operator (long heightpos)

ostream & operator<<(ostream & os,matrix & m)

os<}

return os;

}matrix::~matrix(void)

void matrix::test(),,,};

matrix m1,m(&arr[0][0],4,4),m2(&arr[0][0],4,4);

m.isptv();

/*            

cout<<"arranger="void main()

我們可以從檔案中發現matrix常用的功能,比如submatrix()、乘法等等。另外,將matrix的測試過程,包含在matrix類本身——我覺得這種方式類似於「白盒」測試;如果包裝成物件再測試,那就是「黑盒」:)

LinkList的乙個簡單實現

鏈式線性表是資料結構裡很簡單但也是很常見的資料結構,相比順序儲存的線性表,可以更快的實現新增和刪除操作,但讀取速度比順序結構會慢。鏈式線性表的關鍵在於,每個資料儲存為節點形式。不僅僅儲存有資料,還有乙個引用 next 指向下乙個節點。鏈式結構還可以再擴充套件為雙向鍊錶 迴圈鍊錶等等。基本原理一樣,只...

實現乙個簡單的 shared ptr

智慧型指標的作用有如同指標,但會記錄有多少個 shared ptrs 共同指向乙個物件。這便是所謂的引用計數。一旦最後乙個這樣的指標被銷毀,也就是一旦某個物件的引用計數變為 0,這個物件會被自動刪除。shared ptr 的實現機制其實就是在拷貝構造時使用同乙份引用計數。同乙個 shared ptr...

實現乙個簡單的LinkedList

今天把jdk1.8的linkedlist原始碼看了一下,發現使用的資料結構就是雙向鍊錶。自己也動手實現了乙個簡易版本的雙向鍊錶 package com.natsuki.lesson2 author date 2018 12 29 description 自己根據雙向鍊錶定義乙個簡易linkedlis...