다음을 통해 공유


gslice 클래스

유틸리티 클래스 valarray 는 다차원 하위 집합을 valarray정의하는 데 사용됩니다. a가 valarray 배열의 모든 요소를 가진 다차원 행렬로 간주되는 경우 다 gslice 차원 배열에서 벡터를 추출합니다.

설명

클래스는 형식 gslice_array의 개체를 특징짓는 매개 변수를 저장합니다. 클래스의 valarray 개체가 클래스 gslice 개체에 대한 valarray<Type>인수로 표시될 때 해당 하위 집합은 간접적으로 생성됩니다. 부모 valarray 에서 선택한 하위 집합을 지정하는 저장된 값은 다음과 같습니다.

  • 시작 인덱스

  • 클래스의 길이 벡터입니다 valarray<size_t>.

  • 클래스의 stride 벡터입니다 valarray<size_t>.

두 벡터는 길이가 같아야 합니다.

a gslice 에 의해 정의된 집합이 상수 valarraygslice 의 하위 집합인 경우 새 집합입니다valarray. a gslice 에 의해 정의된 집합이 비규 valarray격의 하위 집합인 gslice 경우 원래 valarray에 대한 참조 의미 체계가 있습니다. 비대화 valarray 개체에 대한 평가 메커니즘은 시간과 메모리를 절약합니다.

개체에 정의된 원본 및 대상 하위 집합 gslice 이 고유하고 모든 인덱스가 유효한 경우에만 개체에 대한 valarray 작업이 보장됩니다.

생성자

생성자 Description
gslice 모두 지정된 요소에서 시작하는 valarray의 여러 조각으로 구성된 valarray의 하위 집합을 정의합니다.

멤버 함수

멤버 함수 설명
size valarray의 일반 조각 요소 수를 지정하는 배열 값을 찾습니다.
start valarray의 일반 조각 시작 인덱스를 찾습니다.
stride valarray의 일반 조각 요소 간의 거리를 찾습니다.

요구 사항

헤더:<valarray>

네임스페이스: std

gslice::gslice

유틸리티 클래스 valarray 는 다차원 조각을 valarray정의하는 데 사용됩니다.

gslice();

gslice(
    size_t _StartIndex,
    const valarray<size_t>& _LenArray,
    const valarray<size_t>& _IncArray);

매개 변수

_StartIndex
valarray 하위 집합에 있는 첫 번째 요소의 인덱스입니다.

_LenArray
valarraygslice요소의 개수를 지정하는 A.

_IncArray
valarraygslice에 있는 보폭을 지정하는 A.

반환 값

기본 생성자는 시작 인덱스에 대해 0을 저장하고 길이 및 진행 속도 벡터에 대해 0 길이 벡터를 저장합니다. 두 번째 생성자는 시작 인덱스에 대해 _StartIndex, 길이 배열에 대해 _LenArray, 진행 속도 배열에 대해 _IncArray를 저장합니다.

설명

gslice는 각 조각이 동일한 지정된 요소에서 시작하는 여러 조각으로 valarray 구성된 하위 집합 valarray 을 정의합니다. 배열을 사용하여 여러 조각을 정의하는 기능은 두 조각의 gsliceslice::slice유일한 차이점입니다. 첫 번째 조각에는 인덱 _StartIndex스가 있는 첫 번째 요소, 첫 번째 요소로 지정된 요소 수 _LenArray및 첫 번째 요소 _IncArray에서 제공하는 stride가 있습니다. 직교 조각의 다음 set에는 첫 번째 조각이 제공한 첫 번째 요소가 있습니다. _LenArray의 두 번째 요소는 요소 수를 지정합니다. 진행 속도는 _IncArray의 두 번째 요소에서 제공됩니다. 조각의 세 번째 차원은 2차원 배열의 요소를 시작 요소로 사용하고 유사하게 계속됩니다.

예시

// gslice_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 ] =  i;

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

   valarray<size_t> Len ( 2 ), Stride ( 2 );
   Len [0] = 4;
   Len [1] = 4;
   Stride [0] = 7;
   Stride [1] = 4;

   gslice vaGSlice ( 0, Len, Stride );
   vaResult = va [ vaGSlice ];

   cout << "The valarray for vaGSlice is vaResult:" << endl
        << "va[vaGSlice] = (";

   for ( i = 0 ; i < 8 ; i++ )
      cout << " " << vaResult [ i ];
   cout << ")" << endl;
}
The operand valarray va is:
( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 )
The valarray for vaGSlice is vaResult:
va[vaGSlice] = ( 0 4 8 12 7 11 15 19)

gslice::size

valarray의 일반 조각 요소 수를 지정하는 배열 값을 찾습니다.

valarray<size_t> size() const;

반환 값

valarray 일반 조각의 각 조각에 있는 요소 수를 지정하는 값입니다valarray.

설명

멤버 함수는 저장된 조각 길이를 반환합니다.

예시

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

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

   valarray<int> va ( 20 ), vaResult;
   for ( i = 0 ; i < 20 ; i+=1 )
      va [ i ] =  i;

   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;

   valarray<size_t> Len ( 2 ), Stride ( 2 );
   Len [0] = 4;
   Len [1] = 4;
   Stride [0] = 7;
   Stride [1] = 4;

   gslice vaGSlice ( 0, Len, Stride );
   vaResult = va [ vaGSlice ];
   const valarray <size_t> sizeGS = vaGSlice.size ( );

   cout << "The valarray for vaGSlice is vaResult:"
        << "\n va[vaGSlice] = ( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaResult [ i ] << " ";
   cout << ")." << endl;

   cout << "The size of vaResult is:"
        << "\n vaGSlice.size ( ) = ( ";
      for ( i = 0 ; i < 2 ; i++ )
         cout << sizeGS[ i ] << " ";
   cout << ")." << endl;
}
The operand valarray va is:
( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ).
The size of the valarray is: 20.

The valarray for vaGSlice is vaResult:
va[vaGSlice] = ( 0 4 8 12 7 11 15 19 ).
The size of vaResult is:
vaGSlice.size ( ) = ( 4 4 ).

gslice::start

valarray의 일반 조각 시작 인덱스를 찾습니다.

size_t start() const;

반환 값

일반 조각의 시작 인덱스입니다 valarray.

예시

// gslice_start.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 ] =  i;

   cout << "The operand valarray va is:\n ( ";
      for ( i = 0 ; i < 20 ; i++ )
         cout << va [ i ] << " ";
   cout << ")." << endl;

   valarray<size_t> Len ( 2 ), Stride ( 2 );
   Len [0] = 4;
   Len [1] = 4;
   Stride [0] = 7;
   Stride [1] = 4;

   gslice vaGSlice ( 0, Len, Stride );
   vaResult = va [ vaGSlice ];
   size_t vaGSstart = vaGSlice.start ( );

   cout << "The valarray for vaGSlice is vaResult:"
        << "\n va[vaGSlice] = ( ";
      for (i = 0 ; i < 8 ; i++ )
         cout << vaResult [ i ] << " ";
   cout << ")." << endl;

   cout << "The index of the first element of vaResult is: "
        << vaGSstart << "." << endl;
}
The operand valarray va is:
( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ).
The valarray for vaGSlice is vaResult:
va[vaGSlice] = ( 0 4 8 12 7 11 15 19 ).
The index of the first element of vaResult is: 0.

gslice::stride

valarray의 일반 조각 요소 간의 거리를 찾습니다.

valarray<size_t> stride() const;

반환 값

valarray 일반 조각의 각 조각에 있는 요소 간의 거리를 지정하는 값입니다valarray.

예시

// gslice_stride.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 ] =  i;

   cout << "The operand valarray va is:\n ( ";
      for (i = 0 ; i < 20 ; i++ )
         cout << va [ i ] << " ";
   cout << ")." << endl;

   valarray<size_t> Len ( 2 ), Stride ( 2 );
   Len [0] = 4;
   Len [1] = 4;
   Stride [0] = 7;
   Stride [1] = 4;

   gslice vaGSlice ( 0, Len, Stride );
   vaResult = va [ vaGSlice ];
   const valarray <size_t> strideGS = vaGSlice.stride ( );

   cout << "The valarray for vaGSlice is vaResult:"
        << "\n va[vaGSlice] = ( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaResult [ i ] << " ";
   cout << ")." << endl;

   cout << "The strides of vaResult are:"
        << "\n vaGSlice.stride ( ) = ( ";
      for ( i = 0 ; i < 2 ; i++ )
         cout << strideGS[ i ] << " ";
   cout << ")." << endl;

}
The operand valarray va is:
( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ).
The valarray for vaGSlice is vaResult:
va[vaGSlice] = ( 0 4 8 12 7 11 15 19 ).
The strides of vaResult are:
vaGSlice.stride ( ) = ( 7 4 ).

참고 항목

C++ 표준 라이브러리의 스레드 안전성