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<T> a(3,5);
  matrix<T> b(5,4);
  vector<T> v(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