Bagikan melalui


slice kelas

Kelas utilitas untuk valarray yang digunakan untuk menentukan subset satu dimensi induk valarray. valarray Jika dianggap sebagai matriks dua dimensi dengan semua elemen dalam array, maka slice ekstrak vektor dalam satu dimensi dari array dua dimensi.

Keterangan

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

  • Indeks awal di valarray.

  • Panjang total, atau jumlah elemen dalam slice.

  • Langkah, atau jarak antara indeks elemen di valarray.

Jika set yang ditentukan oleh adalah slice subset konstanta valarray, maka slice adalah yang baru valarray. Jika set yang ditentukan oleh adalah slice subset dari nonkonstant valarray, maka slice 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 slice objek berbeda dan semua indeks valid.

Konstruktor

Konstruktor Deskripsi
slice Mendefinisikan subset valarray yang terdiri dari kumpulan elemen yang terpisah jarak yang sama dan yang dimulai pada elemen tertentu.

Fungsi anggota

Fungsi anggota Deskripsi
size Menemukan jumlah elemen dalam slice .valarray
start Menemukan indeks awal dari slice valarray.
stride Menemukan jarak antara elemen di slice dari valarray.

Persyaratan

Header:<valarray>

kumpulan nama XML: std

slice::size

Menemukan jumlah elemen dalam slice .valarray

size_t size() const;

Nilai hasil

Jumlah elemen dalam slice .valarray

Contoh

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

Mendefinisikan subset valarray yang terdiri dari kumpulan elemen yang terpisah jarak yang sama dan yang dimulai pada elemen tertentu.

slice();

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

Parameter

_StartIndex
Indeks valarray elemen pertama dalam subset.

_Len
Jumlah elemen dalam subset.

stride
Jarak antar elemen dalam subset.

Nilai hasil

Konstruktor default menyimpan nol untuk indeks awal, panjang total, dan langkah. Konstruktor kedua menyimpan _StartIndex untuk indeks awal, _Len untuk panjang total, dan stride untuk langkah.

Keterangan

Nilainya stride mungkin negatif.

Contoh

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

Menemukan indeks awal dari slice valarray.

size_t start() const;

Nilai hasil

Indeks slice awal dari valarray.

Contoh

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

Menemukan jarak antara elemen di slice dari valarray.

size_t stride() const;

Nilai hasil

Jarak antara elemen dalam slice .valarray

Contoh

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

Lihat juga

Keamanan utas di Pustaka Standar C++