社区讨论
有c++语法大神能教我operator吗
学术版参与者 5已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @lo26h6lu
- 此快照首次捕获于
- 2023/10/23 08:47 2 年前
- 此快照最后确认于
- 2023/11/03 09:02 2 年前
想写一个矩阵的结构体并且重载运算,但是报错了,他不支持33和32的矩阵做乘法。
CPP//
// Created by Mori on 2023/7/18.
//
#include <bits/stdc++.h>
using namespace std;
typedef pair <int, int> pii;
typedef long long ll;
#define rep(i, x, y) for (int i = (x); i <= (y); ++i)
#define per(i, x, y) for (int i = (x); i >= (y); --i)
int read () {
int res = 0;
bool f = false;
char temp = getchar();
for (; !isdigit(temp); temp = getchar()) f = temp == '-';
for (; isdigit(temp); temp = getchar()) res = res * 10 + temp - '0';
if (f) return -res;
return res;
}
char gc () {
char temp = getchar();
while (temp == '\n' || temp == '\r' || temp == ' ') temp = getchar();
return temp;
}
template<typename T, size_t x, size_t y>
struct Matrix {
T s[x + 1][y + 1] = {};
pair <size_t, size_t> size () {
return make_pair(x, y);
}
T *operator [] (int i) {
return s[i];
}
Matrix friend operator * (Matrix &m1, Matrix &m2) {
auto resx = m1.size().first, resy = m2.size().second;
rep (i, 1, resx) rep (j, 1, resy) res[i][j] += m1[i][j] * m2[j][i];
return res;
}
void print () {
rep (i, 1, x) {
rep (j, 1, y) cout << s[i][j] << ' ';
cout << '\n';
}
}
};
signed main () {
Matrix <int, 3, 3> m;
Matrix <int, 2, 3> m2;
rep (i, 1, 3) rep (j, 1, 3) m[i][j] = i * 3 + j;
m.print();
auto m3 = m * m2;
m3.print();
return 0;
}
回复
共 8 条回复,欢迎继续交流。
正在加载回复...