【问题标题】:How to overload operator [] for dynamic matrix to return a value!? C++ [duplicate]如何为动态矩阵重载运算符 [] 以返回值!? C++ [重复]
【发布时间】:2015-01-20 20:14:12
【问题描述】:
class matrix {
public:
  int **A;
  int nrColoane;
  int nrLinii;

 public:        
     int& operator[] (int nrLinii, int nrColoane);
};

【问题讨论】:

  • 通常的做法是使用函数调用运算符,因为它可以接受多个参数。
  • 要对二维矩阵和运算符 [] 执行此操作,您需要返回所谓的代理对象。它包含指向原始对象和指定行的指针。然后它的运算符 [] 将检索该列的值。但是使用 operator() 更简单。 Ps 为你的数据使用一维向量,索引计算x + y * width 效率更高。
  • @Neil:拜托,cmets 是二等公民,可以随时删除,因此将这种智慧放在评论中完全没有意义。写一个答案

标签: c++


【解决方案1】:

恐怕这是不可能的。解决问题的常用方法是重载运算符 ()。

class Matrix {
    public:
        int& operator () (int i, int j);
};

【讨论】:

  • 有可能,只是很棘手。
【解决方案2】:

正如其他人所提到的,使用operator() 解决问题很常见。另一种方法是仍然使用operator[] 接受一个参数,但返回一个表示一行的对象(并保留对原始对象的引用)。然后行对象将再次实现operator[]并返回实际值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多