1

我实际上对同一个想法有两个问题:

我想创建一个 TruthMatrix 类,我该如何:

  1. 分配一个动态的 nXn 布尔矩阵,这样做的唯一方法如下?:

类真理矩阵 {

        bool **mat;
    public:
        TruthMatrix(int n) {
            mat=new bool*[n];
            for (int i=0;i<n;i++) {
                mat[i]=new bool[n];
            }
        }
    };
  1. 覆盖 [][] 运算符以快速访问 mat[i][j] 中的矩阵元素

谢谢!

4

2 回答 2

4
  1. 不,这不是唯一的方法。你可以用一个大数组模拟一个矩阵,你可以使用 STL 容器来简化内存管理(对于一个)。(或使用dynamic_bitset或类似)。

  2. 这可能不值得。矩阵类下标很常见,operator()因为它容易实现。要使用几个方括号(类似于数组的数组),您需要一个合适的代理对象从您的返回operator[](请注意,没有这样的东西operator[][])。

例子:

class TruthMatrix {
    /* ... */
    bool& operator()(int row, int column); // usage: matrixobj(1, 2)
};
// or
class TruthMatrix {
     /* ... */
     class Proxy {
         /* ... */
         bool& operator[](int column);
     };
     Proxy operator[](int row); // usage: matrixobj[1][2]
 };
于 2012-06-04T22:33:10.447 回答
0

一种方法如下:

vector<vector<bool>> tm(n, vector<bool>(n));

tm[i][j] = true;
于 2012-06-04T22:35:52.107 回答