Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中实现自然动态矩阵+;_C++_Dynamic_Operator Overloading_Overriding - Fatal编程技术网

C++ 在C+中实现自然动态矩阵+;

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或类似的方法) 这可能不值得。矩阵类通常使用操作符()下标,因为它更容易实现。要使用几个方括号

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

我想创建TruthMatrix类,如何:

  • 分配布尔的动态nXn矩阵,唯一的方法是如下所示:
  • 类真矩阵{

    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也可以吗?