Assign
Assign
复制矩阵、向量或数组,且带有自动转换。
bool matrix::Assign(
const matrix<T> &mat // 复制的矩阵
);
bool matrix::Assign(
const void &array[] // 复制的数组
);
bool vector::Assign(
const vector<T> &vec // 复制的向量
);
bool vector::Assign(
const void &array[] // 复制的数组
);参数
- m, v 或 array
[输入] 需复制的源矩阵、向量或数组。
返回值
如果成功则返回 true,否则返回 — false。
注意
不同于 Copy,Assign 方法还允许复制数组。 在这种情况下,将进行自动转换,同时生成的矩阵或向量会根据复制数组的大小进行调整。
示例:
//--- 复制矩阵
matrix a= {{2, 2}, {3, 3}, {4, 4}};
matrix b=a+2;
matrix c;
Print("matrix a \n", a);
Print("matrix b \n", b);
c.Assign(b);
Print("matrix c \n", a);
//--- 复制数组到矩阵
matrix double_matrix=matrix::Full(2,10,3.14);
Print("double_matrix before Assign() \n", double_matrix);
int int_arr[5][5]= {{1, 2}, {3, 4}, {5, 6}};
Print("int_arr: ");
ArrayPrint(int_arr);
double_matrix.Assign(int_arr);
Print("double_matrix after Assign(int_arr) \n", double_matrix);
/*
matrix a
[[2,2]
[3,3]
[4,4]]
matrix b
[[4,4]
[5,5]
[6,6]]
matrix c
[[2,2]
[3,3]
[4,4]]
double_matrix before Assign()
[[3.14,3.14,3.14,3.14,3.14,3.14,3.14,3.14,3.14,3.14]
[3.14,3.14,3.14,3.14,3.14,3.14,3.14,3.14,3.14,3.14]]
int_arr:
[,0][,1][,2][,3][,4]
[0,] 1 2 0 0 0
[1,] 3 4 0 0 0
[2,] 5 6 0 0 0
[3,] 0 0 0 0 0
[4,] 0 0 0 0 0
double_matrix after Assign(int_arr)
[[1,2,0,0,0]
[3,4,0,0,0]
[5,6,0,0,0]
[0,0,0,0,0]
[0,0,0,0,0]]
*/