C++ 矩阵类与零参数问题

C++ 矩阵类与零参数问题,c++,class,matrix,vector,C++,Class,Matrix,Vector,我正在尝试创建一个矩阵类,到目前为止,我已经创建了一个可以生成向量向量的成员,但是我不确定如果需要,如何调整向量的大小 例如:resizeArray(3,3)应该返回一个3x3向量 另外,由于某种原因,当我调用默认成员matrix()时,我会得到一个错误,上面写着。。。 “请求myMatrix中的成员numrows,其类型为matrix[]”” 我不完全确定这是什么要求,也找不到其他合适的答案 提前谢谢 #include <iostream> #include <vec

我正在尝试创建一个矩阵类,到目前为止,我已经创建了一个可以生成向量向量的成员,但是我不确定如果需要,如何调整向量的大小

例如:resizeArray(3,3)应该返回一个3x3向量

另外,由于某种原因,当我调用默认成员matrix()时,我会得到一个错误,上面写着。。。 “请求myMatrix中的成员numrows,其类型为matrix[]”” 我不完全确定这是什么要求,也找不到其他合适的答案

提前谢谢

    #include <iostream>
#include <vector>
using namespace std;

template <typename Object>
class matrix
{
    public:
    matrix( ) : array( 1 )
    {
            rows = 1;
            cols = 1;
        for( int i = 0; i < rows; i++ )
            array[ i ].resize( cols );
    }       

    matrix( int rows, int cols ) : array( rows )
    {
        for( int i = 0; i < rows; i++ )
            array[ i ].resize( cols );
    }

    const vector<Object> & operator[]( int row ) const
    { 
        return array[ row ]; 
    }

    vector<Object> & operator[]( int row )
    { 
        return array[ row ]; 
    }

    int numrows( ) const
    { 
        return array.size( ); 
    }

    int numcols( ) const
    { 
        return numrows( ) ? array[ 0 ].size( ) : 0; 
    }

    void resizeArray(int rows, int cols)
    {

         }

    private:
        vector< vector<Object> > array;
        int rows;
        int cols;
};


int main()
{
    matrix<int> myMatrix(3,2);
    //matrix<int> myMatrix1();
    cout << myMatrix.numrows();
    cout << "\n";
    cout << myMatrix.numcols();
    system("PAUSE");
    return 0;
}
#包括
#包括
使用名称空间std;
模板
类矩阵
{
公众:
矩阵():数组(1)
{
行=1;
cols=1;
对于(int i=0;i数组;
int行;
int cols;
};
int main()
{
矩阵myMatrix(3,2);
//矩阵myMatrix1();

CUT< P>您可能希望避免这样的矩阵类中的向量向量。它导致不连续的内存分配,这会减慢执行。内部向量也会增加不必要的开销。您可以考虑使用一个大小为“代码>N*M/<代码”的向量,其中“代码> N< /代码>和<代码> M< /代码>是行数和列数。而且,调整大小也更容易

我使用的是gcc 4.8.1,您的代码可以正常工作。

\include
#include <iostream>
#include <vector>
using namespace std;

template <typename Object>
class matrix
{
public:
   matrix( )
       : array( 1 )
   {
       rows = 1;
       cols = 1;
       for( int i = 0; i < rows; i++ )
           array[ i ].resize( cols );
   }       

   matrix( int rows, int cols ) // you forgot to assign the members rows and cols
       : array( rows ), rows(rows), cols(cols)
   {
       for( int i = 0; i < rows; i++ )
           array[ i ].resize( cols );
   }

   const vector<Object> & operator[]( int row ) const
   { 
       return array[ row ]; 
   }

   vector<Object> & operator[]( int row )
   { 
       return array[ row ]; 
   }

   int numrows( ) const
   { 
       return array.size( ); 
   }

   int numcols( ) const
   { 
       return numrows( ) ? array[ 0 ].size( ) : 0; 
   }

   void resizeArray(int rows, int cols)
   {
       this->rows = rows;
       this->cols = cols;
       array.resize(rows);
       for(int i = 0; i < rows; i++)
           array[i].resize(cols);
   }

private:
    vector< vector<Object> > array;
    int rows;
    int cols;
};
#包括 使用名称空间std; 模板 类矩阵 { 公众: 矩阵() :数组(1) { 行=1; cols=1; 对于(int i=0;i行=行; 这->cols=cols; 数组。调整大小(行); 对于(int i=0;i数组; int行; int cols; };
你可以从我添加到的exmaple中得到一个想法。(注意,它是一个1d矩阵类。)这是一个很好的链接,但最终我的问题是我不知道如何将矩阵传递给函数,然后调整它的大小。我知道我应该能够像创建对象那样做,但我无法找到可行的解决方案。