gslice
클래스
유틸리티 클래스 valarray
는 다차원 하위 집합을 valarray
정의하는 데 사용됩니다. a가 valarray
배열의 모든 요소를 가진 다차원 행렬로 간주되는 경우 다 gslice
차원 배열에서 벡터를 추출합니다.
설명
클래스는 형식 gslice_array
의 개체를 특징짓는 매개 변수를 저장합니다. 클래스의 valarray
개체가 클래스 gslice
개체에 대한 valarray<Type>
인수로 표시될 때 해당 하위 집합은 간접적으로 생성됩니다. 부모 valarray
에서 선택한 하위 집합을 지정하는 저장된 값은 다음과 같습니다.
시작 인덱스
클래스의 길이 벡터입니다
valarray<size_t>
.클래스의 stride 벡터입니다
valarray<size_t>
.
두 벡터는 길이가 같아야 합니다.
a gslice
에 의해 정의된 집합이 상수 valarray
gslice
의 하위 집합인 경우 새 집합입니다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
valarray
각 gslice
요소의 개수를 지정하는 A.
_IncArray
valarray
각 gslice
에 있는 보폭을 지정하는 A.
반환 값
기본 생성자는 시작 인덱스에 대해 0을 저장하고 길이 및 진행 속도 벡터에 대해 0 길이 벡터를 저장합니다. 두 번째 생성자는 시작 인덱스에 대해 _StartIndex
, 길이 배열에 대해 _LenArray
, 진행 속도 배열에 대해 _IncArray
를 저장합니다.
설명
gslice
는 각 조각이 동일한 지정된 요소에서 시작하는 여러 조각으로 valarray
구성된 하위 집합 valarray
을 정의합니다. 배열을 사용하여 여러 조각을 정의하는 기능은 두 조각의 gslice
slice::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 ).