我們直接來看**吧:
/* 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...