다음을 통해 공유


slice 클래스

부모의 valarray1차원 하위 집합을 정의하는 데 사용되는 유틸리티 클래스 valarray 입니다. 배열의 valarray 모든 요소가 있는 2차원 행렬로 간주되는 경우 2차원 배열 slice 에서 1차원으로 벡터를 추출합니다.

설명

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

  • 의 시작 인덱스입니다 valarray.

  • 의 총 길이 또는 요소 slice수입니다.

  • 에 있는 valarray요소의 인덱스 사이의 간격 또는 보폭입니다.

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

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

생성자

생성자 Description
slice 간격이 같고 지정된 요소에서 시작하는 요소 컬렉션으로 구성된 하위 집합 valarray 을 정의합니다.

멤버 함수

멤버 함수 설명
size 의 요소 slice 수를 찾습니다 valarray.
start 의 시작 인덱스 찾기 slice valarray
stride 의 요소 slice 간 거리를 찾습니다 valarray.

요구 사항

헤더:<valarray>

네임스페이스: std

slice::size

의 요소 slice 수를 찾습니다 valarray.

size_t size() const;

반환 값

의 요소 slice 수입니다 valarray.

예시

// 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

간격이 같고 지정된 요소에서 시작하는 요소 컬렉션으로 구성된 하위 집합 valarray 을 정의합니다.

slice();

slice(
    size_t _StartIndex,
    size_t _Len,
    size_t stride);

매개 변수

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

_Len
하위 집합의 요소 수입니다.

stride
하위 집합의 요소 간 거리입니다.

반환 값

기본 생성자는 시작 인덱스, 총 길이 및 진행 속도에 대해 0을 저장합니다. 두 번째 생성자는 시작 인덱스에 대해 _StartIndex, 총 길이에 대해 _Len, 진행 속도에 대해 stride를 저장합니다.

설명

값은 stride 음수일 수 있습니다.

예시

// 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

의 시작 인덱스 찾기 slice valarray

size_t start() const;

반환 값

의 시작 인덱 slice 스입니다 valarray.

예시

// 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

의 요소 slice 간 거리를 찾습니다 valarray.

size_t stride() const;

반환 값

의 요소 slice 간 거리입니다 valarray.

예시

// 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.

참고 항목

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