gslice
sınıfı
Bunun için valarray
bir yardımcı program sınıfı, bir valarray
öğesinin çok boyutlu alt kümelerini tanımlamak için kullanılır. bir valarray
dizideki tüm öğelerle çok boyutlu bir matris olarak kabul edilirse gslice
, çok boyutlu diziden bir vektör ayıklar.
Açıklamalar
sınıfı, türünde gslice_array
bir nesneyi karakterize eden parametreleri depolar. öğesinin valarray
alt kümesi, sınıfın gslice
bir nesnesi için valarray<Type>
bağımsız değişken olarak göründüğünde dolaylı olarak oluşturulur. Üst valarray
öğeden seçilen alt kümeyi belirten depolanan değerler şunlardır:
Başlangıç dizini.
sınıfının
valarray<size_t>
uzunluk vektörleri.sınıfının
valarray<size_t>
bir adım vektör.
İki vektör aynı uzunlukta olmalıdır.
tarafından gslice
tanımlanan küme bir sabitin valarray
alt kümesiyse gslice
, yeni valarray
bir olur. tarafından gslice
tanımlanan küme, sabit valarray
olmayan bir öğesinin alt kümesiyse , gslice
özgün valarray
öğesine başvuru semantiğine sahiptir. Tutarsız valarray
nesneler için değerlendirme mekanizması zaman ve bellek tasarrufu sağlar.
Nesneler üzerindeki valarray
işlemler yalnızca nesneler tarafından gslice
tanımlanan kaynak ve hedef alt kümeleri ayrıysa ve tüm dizinler geçerliyse garanti edilir.
Oluşturucular
Oluşturucu | Açıklama |
---|---|
gslice |
Bir alt kümesinin, tümü belirtilen bir öğede başlayan birden çok diliminden valarray oluşan bir alt kümesini valarray tanımlar. |
Üye işlevleri
Üye işlevi | Açıklama |
---|---|
size |
öğesinin genel bir dilimindeki valarray öğelerin sayısını belirten dizi değerlerini bulur. |
start |
Bir genel diliminin başlangıç dizinini valarray bulur. |
stride |
öğesinin genel bir dilimindeki öğeler arasındaki uzaklığı valarray bulur. |
Gereksinimler
Üst Bilgi:<valarray>
Ad alanı: std
gslice::gslice
Bunun için valarray
bir yardımcı program sınıfı, bir valarray
'nin çok boyutlu dilimlerini tanımlamak için kullanılır.
gslice();
gslice(
size_t _StartIndex,
const valarray<size_t>& _LenArray,
const valarray<size_t>& _IncArray);
Parametreler
_StartIndex
Alt valarray
kümedeki ilk öğenin dizini.
_LenArray
valarray
Her gslice
içindeki öğe sayısını belirten bir .
_IncArray
valarray
Her gslice
bir içindeki adımı belirten bir .
Dönüş değeri
Varsayılan oluşturucu başlangıç dizini için sıfır, uzunluk ve adım vektörleri için sıfır uzunluklu vektörleri depolar. İkinci oluşturucu başlangıç dizini, _LenArray
uzunluk dizisi ve _IncArray
stride dizisi için depolar_StartIndex
.
Açıklamalar
gslice
, her birinin aynı belirtilen öğede başlayan birden çok diliminden valarray
oluşan bir valarray
alt kümesini tanımlar. Ve arasındaki gslice
slice::slice
tek fark, birden çok dilim tanımlamak için dizileri kullanabilmektir. İlk dilim, dizinine _StartIndex
sahip bir ilk öğeye, ilk öğesi _LenArray
tarafından belirtilen öğe sayısına ve ilk öğesi tarafından verilen adıma _IncArray
sahiptir. Sonraki ortogonal dilim kümesinde ilk dilim tarafından verilen ilk öğeler bulunur. öğesinin _LenArray
ikinci öğesi, öğe sayısını belirtir. Adım, öğesinin ikinci öğesi _IncArray
tarafından verilir. Dilimlerin üçüncü bir boyutu, iki boyutlu dizinin öğelerini başlangıç öğeleri olarak alır ve benzer şekilde devam eder.
Örnek
// 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
öğesinin genel bir dilimindeki valarray
öğelerin sayısını belirten dizi değerlerini bulur.
valarray<size_t> size() const;
Dönüş değeri
Bir valarray
genel dilimdeki her dilimdeki öğe sayısını belirten bir valarray
.
Açıklamalar
Üye işlevi, dilimlerin depolanan uzunluklarını döndürür.
Örnek
// 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
Bir genel diliminin başlangıç dizinini valarray
bulur.
size_t start() const;
Dönüş değeri
Bir genel diliminin valarray
başlangıç dizini.
Örnek
// 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
öğesinin genel bir dilimindeki öğeler arasındaki uzaklığı valarray
bulur.
valarray<size_t> stride() const;
Dönüş değeri
bir valarray
genel diliminin her dilimindeki öğeler arasındaki uzaklıkları belirten bir valarray
.
Örnek
// 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 ).