在C++中实现自然动态矩阵
Implement natural dynamic Matrix in C++
我实际上对同一个想法有2个问题:
我想创建一个 TruthMatrix 类,我该如何:
- 分配一个布尔值的动态nXn矩阵,唯一的方法如下:
类真相矩阵 {
bool **mat;
public:
TruthMatrix(int n) {
mat=new bool*[n];
for (int i=0;i<n;i++) {
mat[i]=new bool[n];
}
}
};
- 覆盖 [][] 运算符以快速访问矩阵元素,例如 MAT[i][j]
谢谢!
-
不,这不是唯一的方法。您可以模拟具有一个大型数组的矩阵,也可以使用 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]
};
一种方法如下:
vector<vector<bool>> tm(n, vector<bool>(n));
tm[i][j] = true;
相关文章:
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- C++中的动态铸造故障
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 内联映射初始化的动态atexit析构函数崩溃
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 控制允许动态运行c++的并发操作数
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 输出没有重复元素的动态数组(收缩数组)C++
- C++为线程工作动态地分割例程
- 正在插入动态数组
- 在c++中使用动态分配的问题
- C++中的动态对象与非动态对象
- 如何在动态数组上使用搜索函数
- 视觉studo 2019中的漫画和静态/动态绑定
- 从C++中的数字输入动态创建矩阵
- 如何从QToolBox中动态创建的QLineEdit中获取文本
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 在C++中实现自然动态矩阵