C++ 在C+中实现自然动态矩阵+;
实际上,我对同一个想法有两个问题: 我想创建TruthMatrix类,如何:C++ 在C+中实现自然动态矩阵+;,c++,dynamic,operator-overloading,overriding,C++,Dynamic,Operator Overloading,Overriding,实际上,我对同一个想法有两个问题: 我想创建TruthMatrix类,如何: 分配布尔的动态nXn矩阵,唯一的方法是如下所示: 类真矩阵{ bool**mat; 公众: TruthMatrix(int n){ mat=新布尔值*[n]; 对于(int i=0;i 不,这不是唯一的方法。你可以用一个大数组来模拟一个矩阵,你可以使用STL容器来简化内存管理(例如)。(或者使用dynamic\u bitset或类似的方法) 这可能不值得。矩阵类通常使用操作符()下标,因为它更容易实现。要使用几个方括号
bool**mat;
公众:
TruthMatrix(int n){
mat=新布尔值*[n];
对于(int i=0;i
不,这不是唯一的方法。你可以用一个大数组来模拟一个矩阵,你可以使用STL容器来简化内存管理(例如)。(或者使用dynamic\u bitset
或类似的方法)
这可能不值得。矩阵类通常使用操作符()
下标,因为它更容易实现。要使用几个方括号(类似于数组数组)执行此操作,您需要一个合适的代理对象来从操作符[]
返回(请注意,没有操作符[])[]
)
例如:
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]
};
不,这不是唯一的方法。你可以用一个大数组来模拟一个矩阵,你可以使用STL容器来简化内存管理(例如)。(或者使用dynamic\u bitset
或类似的方法)
这可能不值得。矩阵类通常使用操作符()
下标,因为它更容易实现。要使用几个方括号(类似于数组数组)执行此操作,您需要一个合适的代理对象来从操作符[]
返回(请注意,没有操作符[])[]
)
例如:
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]
};
一种方法如下:
vector<vector<bool>> tm(n, vector<bool>(n));
tm[i][j] = true;
向量tm(n,向量(n));
tm[i][j]=真;
一种方法如下:
vector<vector<bool>> tm(n, vector<bool>(n));
tm[i][j] = true;
向量tm(n,向量(n));
tm[i][j]=真;
这很好,但是我试着自己去实现这个想法,而不是使用一个库…你知道这个例子中的库是标准的C++库。IE向量在每个C++工具中都是可用的。这很好,但是我试着去学习如何自己实现这个想法,而不是使用一个库…你知道THA。在这种情况下,库是标准的C++库。IE向量在每个C++工具中都是可用的。你可以让ASMeGe[i] [j]=10吗?你能让ASMe[j] [j]=10也可以吗?