Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java C+中的多维数组+;_Java_C++_Multidimensional Array - Fatal编程技术网

Java C+中的多维数组+;

Java C+中的多维数组+;,java,c++,multidimensional-array,Java,C++,Multidimensional Array,我想创建一个函数,它将多个多维数组作为参数,并返回另一个多维数组 例如矩阵乘法,有两个数组Matrix1[n][m]和Matrix2[m][k],我的函数必须返回结果[n][k] 爪哇语 /** * @param m1 Matrix 1 * @param m2 Matrix 2 * @return Matrix1*Matrix2 */ public static long[][] matrixMult(long[][] m1, long[][] m2){ long[][] mul

我想创建一个函数,它将多个多维数组作为参数,并返回另一个多维数组

例如矩阵乘法,有两个数组Matrix1[n][m]和Matrix2[m][k],我的函数必须返回结果[n][k]

爪哇语

/**
 * @param m1 Matrix 1
 * @param m2 Matrix 2
 * @return Matrix1*Matrix2
 */
public static long[][] matrixMult(long[][] m1, long[][] m2){
    long[][] mult = new long[m1.length][m2[0].length];

    for (int i = 0; i < m1.length; i++) {
        for (int j = 0; j < m2[0].length; j++) {
            for (int k = 0; k < m1[0].length; k++) {
                mult[i][j] += m1[i][k] * m2[k][j];
            }
        }
    }
    return mult;
}

这是一个你可以使用的样本

typedef std::vector<std::vector<int>> matrix_t;

matrix_t Mul(const matrix_t& a, const matrix_t& b)
{
    matrix_t mult(a.size());

    for (int i = 0; i < a.size(); ++i) 
    {
        mult[i].reserve(b[0].size()); //avoid push backs while calculating your result
        std::fill(mult[i].begin(), mult[i].end(), 0); // make sure the array is initialized to the desired value

        for (int j = 0; j < b[0].size(); ++j) 
        {
            for (int k = 0; k < a[0].size(); ++k) 
            {
                mult[i][j] += a[i][k] * b[k][j];
            }
        }
    }

    return mult;
}
typedef std::向量矩阵;
矩阵(常数矩阵t&a、常数矩阵t&b)
{
矩阵(a.size());
对于(int i=0;i

您还可以使用提供了许多函数的函数对矩阵应用操作。

您忘了描述阻止您完成代码的问题。堆栈溢出是我们帮助解决问题的地方,而不是免费的代码重写服务不是标准C++(它是VLA扩展)。改为使用
std::vector
。@Pshemo的问题是,当我试图定义一个数组时,我出现了错误——可能是因为语法原因——但我不明白为什么。错误没有意义,int**和int[][]是不同的,转换错误,大小类型错误,我得到了很多错误。这就是为什么我不能解释实际的错误,因为我不知道哪里出了问题。我不想使用向量,我需要使用数组。到处都找过像这样的东西,但我找不到。这就是我来这里的原因/省去了
mult[i].reserve(b[0].size())的麻烦并创建如下结果向量:
矩阵(a.size(),std::vector(b[0].size())
typedef std::vector<std::vector<int>> matrix_t;

matrix_t Mul(const matrix_t& a, const matrix_t& b)
{
    matrix_t mult(a.size());

    for (int i = 0; i < a.size(); ++i) 
    {
        mult[i].reserve(b[0].size()); //avoid push backs while calculating your result
        std::fill(mult[i].begin(), mult[i].end(), 0); // make sure the array is initialized to the desired value

        for (int j = 0; j < b[0].size(); ++j) 
        {
            for (int k = 0; k < a[0].size(); ++k) 
            {
                mult[i][j] += a[i][k] * b[k][j];
            }
        }
    }

    return mult;
}