矩阵
矩阵是由数值按照规则排列成的矩形数组。本小节介绍矩阵的创建方式与使用示例,以及矩阵的常用接口。
创建矩阵
使用<Util.h>中提供的工具方法来创建,方法声明如下:
static Vector* createMatrix(DATA_TYPE type, int cols, int rows, int colCapacity, int extraParam = 0, void* data = 0, bool containNull = false);
参数:
-
type
:表示矩阵中存储元素的类型,如 DT_INT,DT_DATE 等。 -
cols
:表示矩阵的列数。 -
rows
:表示矩阵的行数。 -
colCapacity
:表示预留可以支持的 colCapacity 列数的空间。 -
extraParam
:在创建 Decimal 相关类型的矩阵时使用,该参数可用来传入 Decimal 的 scale。 -
data
:若已提前分配好可存放 cols * rows 个元素的内存,则可由该参数传入。用户不需要主动去释放这段内存,矩阵析构时会通过delete[]
自动释放。 -
containNull
:若传入由用户申请的内存 data,则该参数表示 data 内存中前cols * rows个元素是否包含空值。true 表示包含,false 表示不包含。
使用示例如下:
int* pData = new int[9]{1, 2, 3, 4, 5, 6, 7, 8, 9};
ConstantSP matrix = Util::createMatrix(DT_INT, 3, 3, 9, 0, pData);
std::cout << matrix->getString() << std::endl;
输出如下所示:
#0 #1 #2
-- -- --
1 4 7
2 5 8
3 6 9
常用接口
矩阵的常用接口如下:
ConstantSP getRow(INDEX index) const; //获取矩阵第index行(index从0开始),返回一个Vector
ConstantSP getColumn(INDEX index) const; //获取矩阵第index列(index从0开始),返回一个Vector
ConstantSP get(INDEX column, INDEX row) const; //获取矩阵第column列,第row行的元素,返回一个Scalar
bool set(INDEX column, INDEX row, const ConstantSP& value); //设置矩阵第column列,第row行的元素为value
使用示例如下:
std::cout << matrix->getRow(1)->getString() << std::endl; //[2, 5, 8]
std::cout << matrix->getColumn(1)->getString() << std::endl; //[4, 5, 6]
std::cout << matrix->get(2, 2)->getString() << std::endl; //9
matrix->set(0, 0, new Int(100)); //将第一行第一列的元素设置为100