Swap

Troca os buffers entre matrizes, vetores e arrays dinâmicos do mesmo tipo.

bool matrix<T>::Swap(
  matrix<T>  &mat     // matriz para troca
   );
 
bool matrix<T>::Swap(
  vector<T>  &vec     // vetor para troca
   );
 
bool matrix<T>::Swap(
  T          &array[] // array para troca
   );
 
bool vector<T>::Swap(
  vector<T>  &vec     // vetor para troca
   );
 
bool vector<T>::Swap(
  matrix<T>  &mat     // matriz para troca
   );
 
bool vector<T>::Swap(
  T          &array[] // array para troca
   );
 

Parâmetros

mat, vec ou array

[in]  A matriz, vetor ou array dinâmico cujo buffer associado deve ser trocado.

Valor Retornado

Retorna true em caso de sucesso; caso contrário, false.

Nota

O tamanho do array deve ser múltiplo do tamanho da matriz ou do vetor. O tamanho do vetor deve ser múltiplo do tamanho da matriz.

Exemplo:

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);
 
//--- exemplo negativo: array não dinâmico
   T arr1D[10];
   if(a.Swap(arr1D) || GetLastError()!=ERR_INVALID_ARRAY)
      return(false);
   if(v.Swap(arr1D))
      return(false);
 
//--- exemplo negativo: tamanho de array inválido
   T arr2D[][3];
   ArrayResize(arr2D,5);
   v.Resize(15);
   if(a.Swap(arr2D) || !v.Swap(arr2D))
      return(false);
 
   return(true);
  }
//+------------------------------------------------------------------+
//| Função de início do script                                    |
//+------------------------------------------------------------------+
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);
  }

Veja também

Assign