c++ - 在 C++ 中将矩阵相加

标签 c++ matrix

作为我正在编写的程序的一部分,我编写了一个代码段来将两个矩阵相加。它们都保证是正方形的,并且大小相同,但矩阵尺寸是可变的,我不完全确定它们会是什么(尽管我应该能够在执行之前立即确定,因为我会有矩阵 - 对吧?)我的代码如下:

double MatrixAdder( double A, double B, int MatrixSize )
{   
    vector <double> C[ MatrixSize ] [ MatrixSize ] ;
    int i, j ;

    for ( i = 0 ; i < MatrixSize ; i++ )
    {
            for ( j = 0 ; j < MatrixSize ; j++ )
        {
            C[ i ][ j ] = A[ i ][ j ] + B[ i ][ j ] ;
        } ;
    } ;
} ;

我不断遇到以下错误:

数组下标的无效类型'double[int]'

它标记了 C[ i ][ j ] = A[ i ][ j ] + B[ i ][ j ] 的 A[ i ][ j ] 和 B[ i ][ j ] 部分。

我从我看过的其他答案中得到的印象是我可能需要定义一个新的 double(int) 函数来克服这个问题,但我真的不确定如何克服这个问题。

附言很抱歉,如果这不是很清楚 - 这是我的第一篇文章,我会尝试按要求提供说明。

最佳答案

问题出在你的输入参数A & B这是double .

如果你想使用 vector ,你应该使用:vector<vector<double>>

vector<vector<double>> MatrixAdder(const vector<vector<double>>& A, const vector<vector<double>>& B)
{   
    vector<vector<double>> C (A.size());
    int i, j ;

    for ( i = 0 ; i < A.size() ; i++ )
    {
        C[i].resize(A[i].size());
        for ( j = 0 ; j < A[i].size() ; j++ )
        {
            C[ i ][ j ] = A[ i ][ j ] + B[ i ][ j ] ;
        }
    }

    return C;
}

请注意,使用此解决方案,您无需传递数组大小。

关于c++ - 在 C++ 中将矩阵相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29449378/

相关文章:

javascript - Javascript 中的 gluProject 等效项

swift - 在 Swift 3 中转换图像

android - 在 Android 上裁剪图像的透视变换

algorithm - 打印 NxN 矩阵中递增的相邻序号的序列

C++ - 从 valgrind 中删除无效

c++ - 为什么建议在运算符重载中将函数声明为 "friends"

c++ - 在 OpenCV 中使用 inRange() 检测范围内的颜色

使用 Boost 库的 C++ 线程

python - Numpy 在矩阵中获取相邻索引或值的有效方法

c++ - 如何使用 objdump 在高度优化的目标文件中交错源代码?