gpt4 book ai didi

c++ - 比较矩阵乘法

转载 作者:行者123 更新时间:2023-11-30 02:11:39 26 4
gpt4 key购买 nike

我必须将一个矩阵乘以自身,直到该矩阵在某种程度上不等于前面的矩阵之一。然后我需要获得矩阵相等的度数。行数和列数相等。矩阵存储在二维数组中。值为 0 或 1。检查与先前矩阵是否相等的最佳方法是什么?我尝试使用 vector 来存储矩阵:

vector<int[5][5]> m;

但是我得到了一个错误cannot convert from 'const int [5][5]' to 'int [5][5]'

等待建议。

最佳答案

如果可以使用boost ,看提升Matrix类:

好像少了一个==运算符,不过很容易添加:

#include <iostream>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>

using namespace boost::numeric::ublas;

template<typename T>
bool operator==(const matrix<T>& m, const matrix<T>& n)
{
bool returnValue =
(m.size1() == n.size1()) &&
(m.size2() == n.size2());

if (returnValue)
{
for (unsigned int i = 0; returnValue && i < m.size1(); ++i)
{
for (unsigned int j = 0; returnValue && j < m.size2(); ++j)
{
returnValue &= m(i,j) == n(i,j);
}
}
}
return returnValue;
}

像这样使用:

int main ()
{

matrix<double> m (3, 3);
for (unsigned int i = 0; i < m.size1(); ++ i)
{
for (unsigned int j = 0; j < m.size2(); ++ j)
{
m (i, j) = 3 * i + j;
}
}
std::cout << m << std::endl;

matrix<double> n (3, 3);

std::cout << (m == n) << std::endl;
std::cout << (m == m) << std::endl;
}

[Code]

关于c++ - 比较矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3119694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com