用一維陣列來表示矩陣其實質與二維陣列沒啥區別,只是多了下標一步對映而已。由於方法本身很簡單,所以不多做介紹。很容易擴充套件轉置等方法,從而實現乙個更為全面的矩陣型別。
cmatrix.h
#ifndef cmatrix_hhh
#define cmatrix_hhh
#include #include #include templateclass cmatrix;
// operator <<
//friend std::ostream& operator<<(std::ostream& out, const cmatrix& matrix);
// row num;
templatevoid cmatrix::print(std::ostream& out)
out m_nrow(row), m_ncol(col)
template cmatrix::cmatrix(const cmatrix& matrix):
m_nrow(matrix.m_nrow), m_ncol(matrix.m_ncol)
template cmatrix::~cmatrix()
template t& cmatrix::operator()(const int& i, const int& j) const
template cmatrixcmatrix::operator+() const
return tmpmatrix;
}template cmatrixcmatrix::operator+(const cmatrix& matrix) const
return tmpmatrix;
}template cmatrixcmatrix::operator-() const
return tmpmatrix;
}template cmatrixcmatrix::operator-(const cmatrix& matrix) const
return tmpmatrix;
}templatecmatrixcmatrix::operator*(const t& data) const
template cmatrixcmatrix::operator*(const cmatrix& matrix) const
}} return tmpmatrix;
}template cmatrix& cmatrix::operator=(const cmatrix& matrix)
return *this;
}template cmatrix& cmatrix::operator+=(const cmatrix& matrix)
template int cmatrix::mrows() const
template int cmatrix::mcols() const
#endif
main.cpp
#include "cmatrix.h"
#include using namespace std;
int main()
cout << "print matrix" << endl;
matrix.print(cout);
cmatrixtmp = matrix;
tmp.print(cout);
cout << "print -matrix" << endl;
tmp = (-matrix);
tmp.print(cout);
cout << "print +matrix" << endl;
tmp = +matrix;
tmp.print(cout);
cout << "print -matrix + matrix" << endl;
tmp += matrix;
tmp.print(cout);
cout << "print k * matrix" << endl;
tmp = matrix;
tmp = tmp * 2;
tmp.print(cout);
cout << "print the sum of each row" << endl;
cmatrixtmpmul(5,1);
for(int i = 1; i <= 5; i ++)
tmpmul = matrix * tmpmul;
tmpmul.print(cout);
system("pause");
return 0;
}
測試輸出
print matrix
-2 -2
-2 -2
-2 -4
-4 -4
-4 -4
-2 -2
-2 -2
-2 -4
-4 -4
-4 -4
print -matrix
2 22 2
2 44 4
4 4print +matrix
2 22 2
2 44 4
4 4print -matrix + matrix
0 00 0
0 00 0
0 0print k * matrix
-4 -4
-4 -4
-4 -8
-8 -8
-8 -8
-10 -20
請按任意鍵繼續. . .
經典資料結構之稀疏矩陣
資料的儲存形式,不外乎鍊錶和類陣列兩種。使用二維陣列儲存矩陣,如果該矩陣是稀疏的,那麼會浪費很多空間。例如乙個4 4的對角陣,很明顯,只有主對角線上才有元素。那麼使用二維陣列儲存需要16個單位的 儲存空間。然而通過定義乙個結構體 templatestruct sdatatype 然後將其存放於陣列,...
資料結構之順序表的基本運算
include include include include using namespace std define maxsize 100 typedef char elemtype typedef struct sqlist void initlist sqlist l 初始化順序表l void...
資料結構與基本運算
複習篇 1.資料型別 numeric 包含integers 整數型 和double precision 雙精度型 預設是雙精度型資料 character 這種資料形式是夾在雙引號或單引號之間的字串.logical 取true or false complex 形如a bi型的複數 raw 原始型 二...