Bagikan melalui


gslice kelas

Kelas utilitas untuk valarray yang digunakan untuk menentukan subset multidmensional dari valarray. valarray Jika dianggap sebagai matriks multidimensi dengan semua elemen dalam array, maka gslice ekstrak vektor keluar dari array multidimensi.

Keterangan

Kelas menyimpan parameter yang mencirikan objek jenis gslice_array. Subset secara valarray tidak langsung dibangun ketika objek kelas gslice muncul sebagai argumen untuk objek kelas valarray<Type>. Nilai tersimpan yang menentukan subset yang dipilih dari induk valarray meliputi:

  • Indeks awal.

  • Vektor panjang kelas valarray<size_t>.

  • Vektor stride kelas valarray<size_t>.

Kedua vektor harus memiliki panjang yang sama.

Jika set yang ditentukan oleh adalah gslice subset konstanta valarray, maka gslice adalah yang baru valarray. Jika set yang ditentukan oleh adalah gslice subset dari nonkonstant valarray, maka gslice memiliki semantik referensi ke yang asli valarray. Mekanisme evaluasi untuk objek yang tidak konstant valarray menghemat waktu dan memori.

Operasi pada valarray objek dijamin hanya jika subset sumber dan tujuan yang ditentukan oleh gslice objek berbeda dan semua indeks valid.

Konstruktor

Konstruktor Deskripsi
gslice Menentukan subset valarray yang terdiri dari beberapa irisan valarray yang semuanya dimulai pada elemen tertentu.

Fungsi anggota

Fungsi anggota Deskripsi
size Menemukan nilai array yang menentukan jumlah elemen dalam iringan umum dari valarray.
start Menemukan indeks awal dari iringan umum dari valarray.
stride Menemukan jarak antara elemen dalam ikatan umum dari valarray.

Persyaratan

Header:<valarray>

Namespace: std

gslice::gslice

Kelas utilitas untuk valarray yang digunakan untuk menentukan irisan multi-dimensi dari valarray.

gslice();

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

Parameter

_StartIndex
Indeks valarray elemen pertama dalam subset.

_LenArray
valarray Menentukan jumlah elemen di setiap gslice.

_IncArray
Menentukan valarray langkah di setiap gslice.

Nilai hasil

Konstruktor default menyimpan nol untuk indeks awal, dan vektor panjang nol untuk vektor panjang dan stride. Konstruktor kedua menyimpan _StartIndex untuk indeks awal, _LenArray untuk array panjang, dan _IncArray untuk array stride.

Keterangan

gslice mendefinisikan subset valarray yang terdiri dari beberapa irisan valarray yang masing-masing dimulai pada elemen yang ditentukan yang sama. Kemampuan untuk menggunakan array untuk menentukan beberapa irisan adalah satu-satunya perbedaan antara gslice dan slice::slice. Ikatan pertama memiliki elemen pertama dengan indeks _StartIndex, hitungan elemen yang ditentukan oleh elemen _LenArraypertama , dan langkah yang diberikan oleh elemen pertama dari _IncArray. Set irisan ortogonal berikutnya memiliki elemen pertama yang diberikan oleh irisan pertama. Elemen _LenArray kedua menentukan jumlah elemen. Langkah diberikan oleh elemen kedua dari _IncArray. Dimensi ketiga irisan akan mengambil elemen array dua dimensi sebagai elemen awal dan melanjutkan secara analog.

Contoh

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

Menemukan nilai array yang menentukan jumlah elemen dalam iringan umum dari valarray.

valarray<size_t> size() const;

Nilai hasil

valarray menentukan jumlah elemen di setiap ikatan ikatan umum dari valarray.

Keterangan

Fungsi anggota mengembalikan panjang irisan yang disimpan.

Contoh

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

Menemukan indeks awal dari iringan umum dari valarray.

size_t start() const;

Nilai hasil

Indeks awal dari iringan umum dari valarray.

Contoh

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

Menemukan jarak antara elemen dalam ikatan umum dari valarray.

valarray<size_t> stride() const;

Nilai hasil

valarray menentukan jarak antara elemen di setiap ikatan ikatan umum dari valarray.

Contoh

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

Lihat juga

Keamanan utas di Pustaka Standar C++