【问题标题】:Matrix(row, col) = value矩阵(行,列)= 值
【发布时间】:2011-04-04 05:08:43
【问题描述】:
double Matrix::operator()(unsigned int a, unsigned int b)
{
    return m[a*rows+b];
}

我目前有上述用于访问存储在矩阵中的值,但是我希望能够在该位置设置值。这可能吗?

【问题讨论】:

    标签: c++ matrix


    【解决方案1】:

    返回一个参考怎么样:

    double& Matrix::operator()(unsigned int a, unsigned int b)
    {
        return m[a*rows+b];
    }
    

    然后就可以设置对应元素的值了。

    【讨论】:

    • 您还应该有一个const 重载(返回一个值或const 引用),以便访问const 矩阵的元素。
    • 完全正确,您应该添加一个 const 版本。我还建议使用 operator() 的 operator[] instread。因为 () 通常用于函数调用,而 [] 用于访问元素。但这取决于你的口味。
    • @tgmath - operator[] 仅采用一个参数存在问题。您必须添加某种代理类和另一个 operator[] 才能得到 matrix[i][j]。
    • @Bo Persson:在这种情况下,“代理类”只是一个 double* - return m + a * rows;(是的,我知道这可以防止边界检查等,但 OP 无论如何都不会这样做)
    • @Steven:“工作就像一个魅力,谢谢”最好表达为green tick to the left of the answer that helped you most
    猜你喜欢
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多