Condividi tramite


Classe gslice_array

Una classe modello interna e ausiliaria che supporta la sezione generale oggetti immettendo le operazioni tra matrici di sottoinsieme definite dalla sezione generale di un valarray.

template<class Type>
   class gslice_array : public gsplice {
public:
   typedef Type value_type;
   void operator=(
      const valarray<Type>& x
   ) const;

   void operator=(
      const Type& x
   ) const;

   void operator*=(
      const valarray<Type>& x
   ) const;

   void operator/=(
      const valarray<Type>& x
   ) const;

   void operator%=(
      const valarray<Type>& x
   ) const;

   void operator+=(
      const valarray<Type>& x
   ) const;

   void operator-=(
      const valarray<Type>& x
   ) const;

   void operator^=(
      const valarray<Type>& x
   ) const;

   void operator&=(
      const valarray<Type>& x
   ) const;

   void operator|=(
      const valarray<Type>& x
   ) const;

   void operator<<=(
      const valarray<Type>& x
   ) const;

   void operator>>=(
      const valarray<Type>& x
   ) const;

// The rest is private or implementation defined
}

Note

La classe descrive un oggetto che contiene un riferimento a un oggetto va di classe valarray<Tipo>, con un oggetto gs di classe gslice che descrive la sequenza di elementi choose dall'oggetto di valarray<Type>.

Si costruisce un oggetto di gslice_array<Type> solo scrive un'espressione del tipo vai gs []. Le funzioni membro delle classi gslice_array quindi si comportano come le firme della funzione corrispondenti definite per valarray<Type>, ma solo la sequenza di elementi selezionati viene modificata.

La classe modello viene creata indirettamente da determinate operazioni valarray e non può essere utilizzato direttamente nel programma. Una classe modello ausiliaria interna viene invece utilizzata dall'operatore di indice della sezione:

::<operator[] > (<const>gslice&) digslice_arrayTipo  valarrayTipo.

Si costruisce un oggetto di gslice_array<Type> solo scrive un'espressione del tipo va[gsl], per una sezione gsl di vavalarray. Le funzioni membro delle classi gslice_array quindi si comportano come le firme della funzione corrispondenti definite per valarray<Type>, ma solo la sequenza di elementi selezionati viene modificata. La sequenza controllata da gslice_array è definita da tre parametri del costruttore della sezione, indice del primo elemento della prima sezione, il numero di elementi in ogni sezione e la distanza tra gli elementi in ogni sezione.

Nell'esempio riportato di seguito:

const size_t lv[] = {2, 3};
const size_t dv[] = {7, 2};
const valarray<size_t> len(lv, 2), str(dv, 2);
// va[gslice(3, len, str)] selects elements with
//   indices 3, 5, 7, 10, 12, 14

Gli indici devono essere validi per la routine siano validi.

Esempio

Vedere l'esempio relativo gslice::gslice per un esempio di come dichiarare e utilizzare uno slice_array.

Requisiti

Header: <valarray>

Spazio dei nomi: std

Vedere anche

Riferimenti

Sicurezza dei thread nella libreria standard C++