C++文件流_矩阵相乘

   今天做了一个矩阵相乘的例子,里面涉及到了一点点的C++文件流的知识,现整理如下。

1、默认的文件是放在当前工作空间目录中与源文件在同一目录下的。如果要更改文件位置只需要写出全名即可,不过注意其中的分隔符是双斜杠

如:"D:\\MyFiles\\ReadMe.txt"

2、简单的文件读写 fstream  ifstream  ofstream   fin>>a[i][j] 从文件中输出到程序中的变量里面  fout<<c[i][j] 从程序中输入到文件中。注意文件流需要close.

3、矩阵相乘注意一开始初始化矩阵时所用的方法,用二维数组来代表矩阵,double **a,  a = new double *[m], for(i = 0;i <m;i++)   a[i] = new double[n] , 这样就建立了一个m*n的二维矩阵。

PS:发现另一种建立二维矩阵的方法,int m,n;cin>>m;cin>>n;int *a = new double [m*n],for(i = 0;i <m;i++)for(j = 0;j <n;j++) cin>> a[i*n][j]  

pps:我错了,上面不是建立二维数组的方法,是用一位数组来表示矩阵的方法,实际是一个动态的一位数组!而不是二维数组,其实也可以用一位数组来表示矩阵的。i*n + j 一般都是这样的思路,而实际上二维数组在内存中的存放方式仍然是按照一维数组那样存放的,以列为主。

4、矩阵相乘的原理要搞明白则在进行相乘的过程中才能将其思想很好的表达清楚。

5、还是要学习一下C++读写文件的知识

http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/18/2144247.html

这篇文章写得不错

1)文件-》文本文件和 二进制文件

2)可以用各种不同的方式对打开文件或者创建文件,有不同的参数进行选择,默认为in与out,如果不是对文件进行很复杂的操作,这两个足以。

3)可以对文件进行查找和有针对性的操作。也提供了一系列函数

4)如果要熟练应用,应该去写个例子练练手。

好的,下面是一个简单的 C++ 矩阵类实现矩阵相乘的示例代码: ```c++ #include <iostream> #include <vector> using namespace std; class Matrix { private: vector<vector<int>> data; // 存储矩阵的二维向量 int m, n; // 矩阵的行数和列数 public: // 构造函数 Matrix(int rows, int cols) { m = rows; n = cols; data.resize(m, vector<int>(n, 0)); // 初始化矩阵为全零矩阵 } // 矩阵相乘运算符重载 Matrix operator*(const Matrix& other) { if (n != other.m) { cout << "矩阵维度不匹配,无法相乘" << endl; return Matrix(0, 0); } Matrix result(m, other.n); for (int i = 0; i < m; i++) { for (int j = 0; j < other.n; j++) { int temp = 0; for (int k = 0; k < n; k++) { temp += data[i][k] * other.data[k][j]; } result.data[i][j] = temp; } } return result; } // 矩阵赋值运算符重载 Matrix& operator=(const Matrix& other) { if (this == &other) { return *this; } m = other.m; n = other.n; data = other.data; return *this; } // 打印矩阵 void print() { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << data[i][j] << " "; } cout << endl; } } }; int main() { Matrix A(2, 3); Matrix B(3, 2); A.print(); B.print(); A = {{1, 2, 3}, {4, 5, 6}}; B = {{7, 8}, {9, 10}, {11, 12}}; A.print(); B.print(); Matrix C = A * B; C.print(); return 0; } ``` 这个示例代码中,我们定义了一个 `Matrix` 类来表示矩阵,并实现了矩阵相乘的运算符重载。在 `main()` 函数中,我们创建了两个矩阵 `A` 和 `B`,并将它们赋值为我们需要相乘的矩阵。然后,我们通过 `A * B` 的方式来计算它们的乘积,并将结果存储在 `C` 中。最后,我们打印了 `C` 的值,即矩阵相乘的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值