我有這個結構可以對整數矩陣進行乘法、加法和減法。現在我想要使基質的型別(即矢量的型別),通過這個結構,即用戶確定int,double,long等。
struct Matrix
{
vector<vector<int>> mat1, mat2;
vector<vector<int>> mult()
{
vector<vector<int>> res(mat1.size(), vector<int>(mat2.back().size()));
for (int r1 = 0; r1 < mat1.size(); r1) {
for (int c2 = 0; c2 < mat2.back().size(); c2) {
for (int r2 = 0; r2 < mat2.size(); r2) {
res[r1][c2] = mat1[r1][r2] * mat2[r2][c2];
}
}
}
return res;
}
vector<vector<int>> add()
{
vector<vector<int>> res(mat1.size(), vector<int>(mat1.back().size()));
for (int i = 0; i < mat1.size(); i) {
for (int j = 0; j < mat1.back().size(); j) {
res[i][j] = mat1[i][j] mat2[i][j];
}
}
return res;
}
vector<vector<int>> subtract()
{
vector<vector<int>> res(mat1.size(), vector<int>(mat1.back().size()));
for (int i = 0; i < mat1.size(); i) {
for (int j = 0; j < mat1.back().size(); j) {
res[i][j] = mat1[i][j] - mat2[i][j];
}
}
return res;
}
};
uj5u.com熱心網友回復:
我想使矩陣的型別(即矢量的型別),通過這個結構,即用戶確定
int,double,long等。
您可以使您的Martix結構成為模板結構
template<typename T>
struct Matrix
{
std::vector<std::vector<T>> mat1, mat2;
// .... replace all your int with T
}
現在你實體化一個Matrix類
Matrix<int> mat1; // for integers
Matrix<long> mat2; // for long
Matrix<double> mat3; // for doubles
作為旁注:為什么“使用命名空間 std;” 被認為是不好的做法?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/337401.html
