Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Classe
Uma classe de utilitário para valarray que é usada para definir subconjuntos unidimensionais de um valarray pai. Se um valarray for considerado uma matriz bidimensional com todos os elementos em uma matriz, então a slice extrairá um vetor em uma dimensão da matriz bidimensional.
Comentários
A classe armazena os parâmetros que caracterizam um objeto do tipo slice_array. O subconjunto de um valarray é construído indiretamente quando um objeto da classe slice aparece como argumento para um objeto da classe valarray<Type>. Os valores armazenados que especificam o subconjunto selecionado do valarray pai incluem:
Um índice inicial no
valarray.Um comprimento total ou número de elementos na
slice.Um stride ou distância entre os índices de elementos no
valarray.
Se o conjunto definido por uma slice for o subconjunto de um valarray constante, então a slice será um novo valarray. Se o conjunto definido por uma slice for o subconjunto de um valarray não constante, então a slice terá semântica de referência ao valarray original. O mecanismo de avaliação para objetos valarray não constantes economiza tempo e memória.
As operações em objetos valarray são garantidas somente se os subconjuntos de origem e destino definidos pelos objetos slice forem distintos e todos os índices forem válidos.
Construtores
| Construtor | Descrição |
|---|---|
slice |
Define um subconjunto de um valarray que consiste em uma coleção de elementos que estão a uma distância igual e que começam em um elemento especificado. |
Funções de membro
| Função de membro | Descrição |
|---|---|
size |
Encontra o número de elementos em uma slice de um valarray. |
start |
Localiza o índice inicial de uma slice de um valarray. |
stride |
Encontra a distância entre os elementos em uma slice de um valarray. |
Requisitos
Cabeçalho:<valarray>
Namespace: std
slice::size
Encontra o número de elementos em uma slice de um valarray.
size_t size() const;
Valor retornado
O número de elementos em uma slice de um valarray.
Exemplo
// slice_size.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
size_t sizeVA, sizeVAR;
valarray<int> va ( 20 ), vaResult;
for ( i = 0 ; i < 20 ; i += 1 )
va [ i ] = i+1;
cout << "The operand valarray va is:\n ( ";
for ( i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
sizeVA = va.size ( );
cout << "The size of the valarray is: "
<< sizeVA << "." << endl << endl;
slice vaSlice ( 3 , 6 , 3 );
vaResult = va [ vaSlice ];
cout << "The slice of valarray va is vaResult = "
<< "va[slice( 3, 6, 3)] =\n ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
sizeVAR = vaSlice.size ( );
cout << "The size of slice vaSlice is: "
<< sizeVAR << "." << endl;
}
The operand valarray va is:
( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ).
The size of the valarray is: 20.
The slice of valarray va is vaResult = va[slice( 3, 6, 3)] =
( 4 7 10 13 16 19 ).
The size of slice vaSlice is: 6.
slice::slice
Define um subconjunto de um valarray que consiste em uma coleção de elementos que estão a uma distância igual e que começam em um elemento especificado.
slice();
slice(
size_t _StartIndex,
size_t _Len,
size_t stride);
Parâmetros
_StartIndex
O índice do valarray do primeiro elemento no subconjunto.
_Len
O número de elementos no subconjunto.
stride
A distância entre elementos no subconjunto.
Valor retornado
O construtor padrão armazena zeros para o índice inicial, o comprimento total e o stride. O segundo construtor armazena _StartIndex para o índice inicial, _Len para o comprimento total e stride para o stride.
Comentários
O valor do stride pode ser negativo.
Exemplo
// slice_ctor.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> va ( 20 ), vaResult;
for ( i = 0 ; i < 20 ; i+=1 )
va [ i ] = 2 * (i + 1 );
cout << "The operand valarray va is:\n( ";
for ( i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
slice vaSlice ( 1 , 7 , 3 );
vaResult = va [ vaSlice ];
cout << "\nThe slice of valarray va is vaResult:"
<< "\nva[slice( 1, 7, 3)] = ( ";
for ( i = 0 ; i < 7 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
}
The operand valarray va is:
( 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 ).
The slice of valarray va is vaResult:
va[slice( 1, 7, 3)] = ( 4 10 16 22 28 34 40 ).
slice::start
Localiza o índice inicial de uma slice de um valarray.
size_t start() const;
Valor retornado
O índice inicial de uma slice de um valarray.
Exemplo
// slice_start.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
size_t startVAR;
valarray<int> va ( 20 ), vaResult;
for ( i = 0 ; i < 20 ; i += 1 )
va [ i ] = i+1;
cout << "The operand valarray va is:\n ( ";
for ( i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
slice vaSlice ( 3 , 6 , 3 );
vaResult = va [ vaSlice ];
cout << "The slice of valarray va is vaResult = "
<< "va[slice( 3, 6, 3)] =\n ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
startVAR = vaSlice.start ( );
cout << "The start index of slice vaSlice is: "
<< startVAR << "." << endl;
}
The operand valarray va is:
( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ).
The slice of valarray va is vaResult = va[slice( 3, 6, 3)] =
( 4 7 10 13 16 19 ).
The start index of slice vaSlice is: 3.
slice::stride
Encontra a distância entre os elementos em uma slice de um valarray.
size_t stride() const;
Valor retornado
A distância entre os elementos em uma slice de um valarray.
Exemplo
// slice_stride.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
size_t strideVAR;
valarray<int> va ( 20 ), vaResult;
for ( i = 0 ; i < 20 ; i += 1 )
va [ i ] = 3 * ( i + 1 );
cout << "The operand valarray va is:\n ( ";
for ( i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
slice vaSlice ( 4 , 5 , 3 );
vaResult = va [ vaSlice ];
cout << "The slice of valarray va is vaResult = "
<< "va[slice( 4, 5, 3)] =\n ( ";
for ( i = 0 ; i < 5 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
strideVAR = vaSlice.stride ( );
cout << "The stride of slice vaSlice is: "
<< strideVAR << "." << endl;
}
The operand valarray va is:
( 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 ).
The slice of valarray va is vaResult = va[slice( 4, 5, 3)] =
( 15 24 33 42 51 ).
The stride of slice vaSlice is: 3.