C++ 矩阵类与零参数问题
我正在尝试创建一个矩阵类,到目前为止,我已经创建了一个可以生成向量向量的成员,但是我不确定如果需要,如何调整向量的大小 例如:resizeArray(3,3)应该返回一个3x3向量 另外,由于某种原因,当我调用默认成员matrix()时,我会得到一个错误,上面写着。。。 “请求myMatrix中的成员numrows,其类型为matrix[]”” 我不完全确定这是什么要求,也找不到其他合适的答案 提前谢谢C++ 矩阵类与零参数问题,c++,class,matrix,vector,C++,Class,Matrix,Vector,我正在尝试创建一个矩阵类,到目前为止,我已经创建了一个可以生成向量向量的成员,但是我不确定如果需要,如何调整向量的大小 例如:resizeArray(3,3)应该返回一个3x3向量 另外,由于某种原因,当我调用默认成员matrix()时,我会得到一个错误,上面写着。。。 “请求myMatrix中的成员numrows,其类型为matrix[]”” 我不完全确定这是什么要求,也找不到其他合适的答案 提前谢谢 #include <iostream> #include <vec
#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矩阵类。)这是一个很好的链接,但最终我的问题是我不知道如何将矩阵传递给函数,然后调整它的大小。我知道我应该能够像创建对象那样做,但我无法找到可行的解决方案。