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]]



  */

参见

Copy