Swap

在相同类型的矩阵、向量和动态数组之间交换缓冲区。

bool matrix<T>::Swap(
  matrix<T>  &mat     // 要交换的矩阵
   );
 
bool matrix<T>::Swap(
  vector<T>  &vec     // 要交换的向量
   );
 
bool matrix<T>::Swap(
  T          &array[] // 要交换的数组
   );
 
bool vector<T>::Swap(
  vector<T>  &vec     // 要交换的向量
   );
 
bool vector<T>::Swap(
  matrix<T>  &mat     // 要交换的矩阵
   );
 
bool vector<T>::Swap(
  T          &array[] // 要交换的数组
   );
 

参数

mat、vec 或 array

[in]  要交换其关联缓冲区的矩阵、向量或动态数组。

返回值

成功时返回 true,否则返回 false。

注意

数组大小必须是矩阵或向量大小的倍数。向量大小必须是矩阵大小的倍数。

示例:

template<typename T>
bool Test(void)
  {
   matrix<Ta(3,5);
   matrix<Tb(5,4);
   vector<Tv(10);
 
   if(!a.Swap(b) || a.Rows()!=5 || a.Cols()!=4 || b.Rows()!=3 || b.Cols()!=5)
      return(false);
 
   if(!a.Swap(v) || v.Size()!=20 || a.Rows()!=1 || a.Cols()!=10)
      return(false);
 
//--- 反例:非动态数组
   T arr1D[10];
   if(a.Swap(arr1D) || GetLastError()!=ERR_INVALID_ARRAY)
      return(false);
   if(v.Swap(arr1D))
      return(false);
 
//--- 反例:数组大小无效
   T arr2D[][3];
   ArrayResize(arr2D,5);
   v.Resize(15);
   if(a.Swap(arr2D) || !v.Swap(arr2D))
      return(false);
 
   return(true);
  }
//+------------------------------------------------------------------+
//| 脚本程序启动函数                                    |
//+------------------------------------------------------------------+
int OnStart(void)
  {
   bool res=true;
 
   res&=Test<double>();
   res&=Test<float>();
   res&=Test<complex>();
   res&=Test<complexf>();
 
   Print(res ? "passed" : "failed");
   return(res ? 0 : -1);
  }

另请参阅

Assign