1.矩阵类模板matrix
包括转置函数transport
template <class T>
class mat
{
private:
T** a; //二级指针
int h, l; //行、列
public:
mat(){}
mat(int h1, int l1)
{
h = h1;
l = l1;//设置行列
a = new T * [h];
for (int i = 0; i < h; ++i)
{
a[i] = new T[l];
}//创造二维数组
}
void set(int h1,int l1)
{
h = h1;
l = l1;
a = new T * [h];
for (int i = 0; i < h; ++i)
{
a[i] = new T[l];
}
for (int i = 0; i < h; i++)
{
for (int j = 0; j < l; j++)
{
cin >> a[i][j];//传入数据
}
}
}
~mat()
{
for (int i = 0; i < h; ++i)
{
delete[] a[I];
}
delete[] a;//析构
}
void tran()//转置
{
mat tmp(l,h);//创造新数组接收传进的数组
for (int j = 0; j < l; j++)
{
for (int i = 0; i < h; i++)
{
tmp.a[j][i] = a[i][j];
}
}
for (int i = 0; i < h; ++i)
{
delete[] a[i];
}
delete[] a;//释放掉原来的
h = tmp.h;
l = tmp.l;
a = new T * [h];
for (int i = 0; i < h; ++i)
{
a[i] = new T[l];
}
for (int i = 0; i < h; i++)
{
for (int j = 0; j < l; j++)
{
a[i][j] = tmp.a[i][j];//将转置后的重新传回来
}
}
}
void show()
{
for (int i = 0; i < h; i++)
{
for (int j = 0; j < l; j++)
{
if (j != 0)
{
cout << " " << a[i][j];
}
else
{
cout << a[i][j];
}
}
cout << endl;
}
}
};
2.sort函数
对给定区间所有元素进行排序,默认为升序,也可进行降序排序。
头文件要加上#include<algorithm>
Sort函数有三个参数:
(1)第一个是要排序的数组的起始地址。
(2)第二个是结束的地址(最后一位要排序的地址)
(3)第三个参数是排序的方法,可以不写第三个参数,默认的排序方法是从小到大排序。
sort(start,end,排序函数)
3.列表类(类模板)
template <class T>
class list
{
private:
T a[100];
int lenth;
public:
list(){}
void readNum(int n)
{
lenth=n;
for(int i=0;i<n;++i)
{
cin>>a[i];//读入列表
}
}
void cha(int j, T q)//插入一个数
{
for (int s = lenth+1; s >= j; s--)
{
a[s+1] = a[s];
}
lenth++;
a[j] = q;
}
void shan(int j)//删掉一个数
{
for (int s =j;s<lenth-1;s++)
{
a[s] = a[s+1];
}
lenth--;
}
};