用vector<vector<T> >定义template<class T> matrix
时间:2011-12-13
来源:互联网
想用vector<vector<T> > 定义一个matrix<T>的类模板,请问如何实现
作者: linansx037 发布时间: 2011-12-13
#ifndef MATRIX_H
#define MATRIX_H
#include <vector>
using namespace std;
template <typename Object>
class matrix
{
public:
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; }
private:
vector< vector<Object> > array;
};
#endif
#define MATRIX_H
#include <vector>
using namespace std;
template <typename Object>
class matrix
{
public:
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; }
private:
vector< vector<Object> > array;
};
#endif
作者: linansx037 发布时间: 2011-12-13
引用 1 楼 linansx037 的回复:
#ifndef MATRIX_H
#define MATRIX_H
#include <vector>
using namespace std;
template <typename Object>
class matrix
{
public:
matrix( int rows, int cols ) : array( rows ) {
for( int i ……
#ifndef MATRIX_H
#define MATRIX_H
#include <vector>
using namespace std;
template <typename Object>
class matrix
{
public:
matrix( int rows, int cols ) : array( rows ) {
for( int i ……
这就蛮好的呀,你可以再加些方法,然后实现它,
作者: zff869030831 发布时间: 2011-12-13
我觉得完全可以用vector<T>定义matrix
matrix(col*row)用size是col*row的vector就可以
也符合数据操作分离原则,数组存的是原始数据,matrix类只是对数据的处理抽象而已
这样定义的好处是后续矩阵的操作容易实现
比如加减乘除对角化等,还有矩阵的拷贝初始化
特别是矩阵的转置,要是用二维数组,则数据数组要完全重新初始化,而一维数组的只需交换对应数据而已
matrix(col*row)用size是col*row的vector就可以
也符合数据操作分离原则,数组存的是原始数据,matrix类只是对数据的处理抽象而已
这样定义的好处是后续矩阵的操作容易实现
比如加减乘除对角化等,还有矩阵的拷贝初始化
特别是矩阵的转置,要是用二维数组,则数据数组要完全重新初始化,而一维数组的只需交换对应数据而已
作者: erqieshi 发布时间: 2011-12-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28