Compartilhar via


Classe indirect_array

Uma classe interna, auxiliar do modelo que da suporte aos objetos que são subconjuntos de valarrays fornecendo operações entre as matrizes de subconjunto definido especificando um subconjunto dos índices de um pai valarray.

template<class Type>
   class indirect_array {
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
}

Comentários

A classe descreve um objeto que armazena uma referência a um objeto va da classe valarray<Tipo>, junto com um objeto xa da classe valarray<size_t>, que descreve a sequência de elementos para selecionar do objeto de valarray<Type> .

Cria um objeto de indirect_array<Type> somente escrevendo uma expressão de formato va[xa]. As funções de membro da classe indirect_array se comportam como as assinaturas correspondentes de função definidas para valarray<Type>, com exceção de que somente a sequência de elementos selecionados é afetada.

A sequência consiste nos elementos de xa.tamanho , onde o elemento I se torna o índice xa[]Identro de va.

Exemplo:

// indirect_array.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> va ( 10 );
   for ( i = 0 ; i < 10 ; i += 2 )
      va [ i ] =  i;
   for ( i = 1 ; i < 10 ; i += 2 )
      va [ i ] =  -1;
   
   cout << "The initial operand valarray is:  ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << va [ i ] << " ";
   cout << ")." << endl;

   // Select 2nd, 4th & 6th elements
   // and assign a value of 10 to them
   valarray<size_t> indx ( 3 );
   indx [0] = 2;
   indx [1] = 4;
   indx [2] = 6;
   va[indx] = 10;

   cout << "The modified operand valarray is:  ( ";
      for (i = 0 ; i < 10 ; i++ )
         cout << va [ i ] << " ";
   cout << ")." << endl;
}

Saída

The initial operand valarray is:  ( 0 -1 2 -1 4 -1 6 -1 8 -1 ).
The modified operand valarray is:  ( 0 -1 10 -1 10 -1 10 -1 8 -1 ).

Requisitos

Cabeçalho: <valarray>

Namespace: std

Consulte também

Referência

Segurança de threads na Biblioteca Padrão C++