我实际上有两个关于同一想法的问题:
我想创建一个TruthMatrix类,我该怎么做:
类TruthMatrix {
bool **mat;
public:
TruthMatrix(int n) {
mat=new bool*[n];
for (int i=0;i<n;i++) {
mat[i]=new bool[n];
}
}
};
谢谢!
答案 0 :(得分:4)
不,这不是唯一的方法。您可以使用一个大型数组模拟矩阵,并且可以使用STL容器来简化内存管理(一个)。 (或使用dynamic_bitset
或类似的)。
这可能不值得。通过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]
};
答案 1 :(得分:0)
一种方法如下:
vector<vector<bool>> tm(n, vector<bool>(n));
tm[i][j] = true;