Bagikan melalui


valarray kelas

Templat valarray<Type> kelas menjelaskan objek yang mengontrol urutan elemen jenis Type yang disimpan sebagai array, dirancang untuk operasi matematika berkecepatan tinggi, dan dioptimalkan untuk performa komputasi.

Keterangan

Kelas adalah representasi dari konsep matematika dari sekumpulan nilai yang diurutkan. Elemen-elemennya diberi nomor berurutan dari nol. Kelas ini digambarkan sebagai kontainer dekat karena mendukung beberapa, tetapi tidak semua, dari kemampuan kontainer urutan kelas satu, seperti vector, dukungan. Ini berbeda dari templat vector kelas dengan dua cara penting:

  • Ini mendefinisikan banyak operasi aritmatika antara elemen objek yang sesuai dengan valarray<Type> jenis dan panjang yang sama, seperti varr_x* = cos(varr_y) + sin(varr_z).

  • Ini mendefinisikan berbagai cara menarik untuk mensubskripsikan valarray<Type> objek, dengan kelebihan operator[]beban .

Objek kelas Type:

  • Memiliki konstruktor default publik, destruktor, konstruktor salinan, dan operator penugasan, dengan perilaku konvensional.

  • Menentukan operator aritmetika dan fungsi matematika, sesuai kebutuhan, yang didefinisikan untuk jenis floating-point, dengan perilaku konvensional.

Secara khusus, tidak ada perbedaan halus yang mungkin ada antara konstruksi salinan dan konstruksi default diikuti oleh penugasan. Tidak ada operasi pada objek kelas Type yang dapat melemparkan pengecualian.

Anggota

Konstruktor

Nama Deskripsi
valarray Membangun valarray ukuran tertentu atau dengan elemen dari nilai tertentu atau sebagai salinan lain valarray atau subset dari yang lain valarray.

Typedefs

Nama Deskripsi
value_type Jenis yang mewakili jenis elemen yang disimpan dalam valarray.

Fungsi

Nama Deskripsi
apply Menerapkan fungsi tertentu ke setiap elemen .valarray
cshift Secara siklus menggeser semua elemen dalam valarray dengan jumlah posisi tertentu.
free Membebaskan memori yang digunakan oleh valarray.
max Menemukan elemen terbesar dalam valarray.
min Menemukan elemen terkecil dalam valarray.
resize Mengubah jumlah elemen dalam menjadi valarray angka tertentu, menambahkan atau menghapus elemen sesuai kebutuhan.
shift Menggeser semua elemen dalam valarray dengan jumlah posisi tertentu.
size Menemukan jumlah elemen dalam valarray.
sum Menentukan jumlah semua elemen dalam valarray panjang bukan nol.
swap

Operator

Nama Deskripsi
operator! Operator unary yang mendapatkan nilai NOT (!) logis dari setiap elemen dalam valarray.
operator%= Mendapatkan sisa pembagian elemen elemen array baik dengan yang ditentukan valarray atau dengan nilai jenis elemen.
operator&= Mendapatkan bitwise AND (&) elemen dalam array baik dengan elemen yang sesuai dalam yang ditentukan valarray atau dengan nilai jenis elemen.
operator>>= Kanan menggeser bit untuk setiap elemen valarray operand jumlah posisi tertentu atau dengan jumlah elemen bijaksana yang ditentukan oleh detik valarray.
operator<<= Kiri menggeser bit untuk setiap elemen valarray operan sejumlah posisi tertentu atau dengan jumlah elemen bijaksana yang ditentukan oleh detik valarray.
operator*= Mengalikan elemen dari jenis elemen tertentu valarray atau nilai, elemen-bijaksana, ke operand valarray.
operator+ Operator unary yang menerapkan nilai plus untuk setiap elemen dalam valarray. Pada jenis aritmatika normal, operator ini tidak berpengaruh.
operator+= Menambahkan elemen dari jenis elemen yang ditentukan valarray atau nilai, elemen-bijaksana, ke operand valarray.
operator- Operator unary yang menerapkan negasi aritmatika ke setiap elemen dalam valarray.
operator-= Mengurangi elemen dari jenis elemen tertentu valarray atau nilai, elemen-bijaksana, dari operand valarray.
operator/= Membagi elemen operand valarray secara bijaksana dengan elemen yang ditentukan valarray atau nilai dari jenis elemen.
operator= Menetapkan elemen ke yang valarray nilainya ditentukan baik secara langsung atau sebagai bagian dari beberapa lainnya valarray atau oleh slice_array, , gslice_array, mask_arrayatau indirect_array.
operator[] Mengembalikan referensi ke elemen atau nilainya pada indeks tertentu atau subset tertentu.
operator^= Mendapatkan bitwise eksklusif atau (^) dari dengan valarray yang ditentukan valarray atau nilai dari jenis elemen.
operator|= Mendapatkan bitwise OR (|) elemen dalam array baik dengan elemen yang sesuai dalam yang ditentukan valarray atau dengan nilai jenis elemen.
operator~ Operator unary yang mendapatkan nilai bitwise melengkapi (~) setiap elemen dalam valarray.

apply

Menerapkan fungsi tertentu ke setiap elemen .valarray

valarray<Type> apply(Type function_object(Type)) const;

valarray<Type> apply(Type function_object(const Type&)) const;

Parameter

function_object(Type)
Objek fungsi yang akan diterapkan ke setiap elemen operand valarray.

function_object(const Type&)
Objek fungsi untuk const elemen yang akan diterapkan ke setiap elemen operand valarray.

Nilai hasil

Elemen valarray yang telah function_object menerapkan elemen-bijaksana ke elemen operand valarray.

Keterangan

Fungsi anggota mengembalikan objek kelas valarray<Type>, panjang size, masing-masing elemennya elem adalah hasil dari function_object((*this)[elem]).

Contoh

// valarray_apply.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

using namespace std;

int __cdecl MyApplyFunc( int n )
{
   return n*2;
}

int main( int argc, char* argv[] )
{
   valarray<int> vaR(10), vaApplied(10);
   int i;

   for ( i = 0; i < 10; i += 3 )
      vaR[i] = i;

   for ( i = 1; i < 10; i += 3 )
      vaR[i] = 0;

   for ( i = 2; i < 10; i += 3 )
      vaR[i] = -i;

   cout << "The initial Right valarray is: (";
   for   ( i=0; i < 10; ++i )
      cout << " " << vaR[i];
   cout << " )" << endl;

   vaApplied = vaR.apply( MyApplyFunc );

   cout << "The element-by-element result of "
       << "applying MyApplyFunc to vaR is the\nvalarray: ( ";
   for ( i = 0; i < 10; ++i )
      cout << " " << vaApplied[i];
   cout << " )" << endl;
}
The initial Right valarray is: ( 0 0 -2 3 0 -5 6 0 -8 9 )
The element-by-element result of applying MyApplyFunc to vaR is the
valarray: (  0 0 -4 6 0 -10 12 0 -16 18 )

cshift

Secara siklus menggeser semua elemen dalam valarray dengan jumlah posisi tertentu.

valarray<Type> cshift(int count) const;

Parameter

count
Jumlah tempat elemen akan digeser ke depan.

Nilai hasil

valarray Baru di mana semua elemen telah dipindahkan count posisinya secara siklus ke depan valarray, atau ke kiri dibandingkan dengan posisinya dalam operand valarray.

Keterangan

Nilai count positif menggeser elemen yang ditinggalkan count secara siklus.

Nilai count negatif menggeser elemen tempat yang tepat count secara siklus.

Contoh

// valarray_cshift.cpp
// compile with: /EHsc

#include <valarray>
#include <iostream>

int main()
{
    using namespace std;
    int i;

    valarray<int> va1(10), va2(10);
    for (i = 0; i < 10; i+=1)
        va1[i] = i;
    for (i = 0; i < 10; i+=1)
        va2[i] = 10 - i;

    cout << "The operand valarray va1 is: (";
    for (i = 0; i < 10; i++)
        cout << " " << va1[i];
    cout << ")" << endl;

    // A positive parameter shifts elements right
    va1 = va1.cshift(4);
    cout << "The cyclically shifted valarray va1 is:\nva1.cshift (4) = (";
    for (i = 0; i < 10; i++)
        cout << " " << va1[i];
    cout << ")" << endl;

    cout << "The operand valarray va2 is: (";
    for (i = 0; i < 10; i++)
        cout << " " << va2[i];
    cout << ")" << endl;

    // A negative parameter shifts elements left
    va2 = va2.cshift(-4);
    cout << "The cyclically shifted valarray va2 is:\nva2.shift (-4) = (";
    for (i = 0; i < 10; i++)
        cout << " " << va2[i];
    cout << ")" << endl;
}
The operand valarray va1 is: ( 0 1 2 3 4 5 6 7 8 9)
The cyclically shifted valarray va1 is:
va1.cshift (4) = ( 4 5 6 7 8 9 0 1 2 3)
The operand valarray va2 is: ( 10 9 8 7 6 5 4 3 2 1)
The cyclically shifted valarray va2 is:
va2.shift (-4) = ( 4 3 2 1 10 9 8 7 6 5)

free

Membebaskan memori yang digunakan oleh valarray.

void free();

Keterangan

Fungsi nonstandar ini setara dengan menetapkan kosong valarray. Contohnya:

valarray<T> v;
v = valarray<T>();

// equivalent to v.free()

max

Menemukan elemen terbesar dalam valarray.

Type max() const;

Nilai hasil

Nilai maksimum elemen dalam operand valarray.

Keterangan

Fungsi anggota membandingkan nilai dengan menerapkan operator< atau operator> antara pasangan elemen kelas Type, yang operatornya harus disediakan untuk elemen Type.

Contoh

// valarray_max.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i, MaxValue;

   valarray<int> vaR ( 10 );
   for ( i = 0 ; i < 10 ; i += 3 )
      vaR [ i ] =  i;
   for ( i = 1 ; i < 10 ; i += 3 )
      vaR [ i ] =  2*i - 1;
   for ( i = 2 ; i < 10 ; i += 3 )
      vaR [ i ] =  10 - i;

   cout << "The operand valarray is: ( ";
      for (i = 0 ; i < 10 ; i++ )
         cout << vaR [ i ] << " ";
   cout << ")." << endl;

   MaxValue = vaR.max (  );
   cout << "The largest element in the valarray is: "
        << MaxValue  << "." << endl;
}
The operand valarray is: ( 0 1 8 3 7 5 6 13 2 9 ).
The largest element in the valarray is: 13.

min

Menemukan elemen terkecil dalam valarray.

Type min() const;

Nilai hasil

Nilai minimum elemen dalam operand valarray.

Keterangan

Fungsi anggota membandingkan nilai dengan menerapkan operator< atau operator> antara pasangan elemen kelas Type, yang operatornya harus disediakan untuk elemen Type.

Contoh

// valarray_min.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i, MinValue;

   valarray<int> vaR ( 10 );
   for ( i = 0 ; i < 10 ; i += 3 )
      vaR [ i ] =  -i;
   for ( i = 1 ; i < 10 ; i += 3 )
      vaR [ i ] =  2*i;
   for ( i = 2 ; i < 10 ; i += 3 )
      vaR [ i ] =  5 - i;

   cout << "The operand valarray is: ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << vaR [ i ] << " ";
   cout << ")." << endl;

   MinValue = vaR.min ( );
   cout << "The smallest element in the valarray is: "
        << MinValue  << "." << endl;
}
/* Output:
The operand valarray is: ( 0 2 3 -3 8 0 -6 14 -3 -9 ).
The smallest element in the valarray is: -9.
*/

operator!

Operator unary yang mendapatkan nilai NOT (!) logis dari setiap elemen dalam valarray.

valarray<bool> operator!() const;

Nilai hasil

Nilai valarray Boolean yang merupakan negasi logis dari nilai elemen operand valarray.

Keterangan

Operasi logis TIDAK, ditandai dengan !, secara logis meniadakan elemen karena mengonversi semua nilai nol menjadi true dan semua nilai bukan nol menjadi false. Nilai Boolean yang dikembalikan valarray berukuran sama dengan operan valarray.

Contoh

// valarray_op_lognot.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> vaL ( 10 );
   valarray<bool> vaNOT ( 10 );
   for ( i = 0 ; i < 10 ; i += 2 )
      vaL [ i ] =  0;
   for ( i = 1 ; i < 10 ; i += 2 )
      vaL [ i ] =  i-1;

   cout << "The initial valarray is:  ( ";
      for (i = 0 ; i < 10 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;

   vaNOT = !vaL;
   cout << "The element-by-element result of "
        << "the logical NOT operator! is the"
        << endl << "valarray: ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << vaNOT [ i ] << " ";
   cout << ")." << endl;
}
The initial valarray is:  ( 0 0 0 2 0 4 0 6 0 8 ).
The element-by-element result of the logical NOT operator! is the
valarray: ( 1 1 1 0 1 0 1 0 1 0 ).

operator%=

Mendapatkan sisa pembagian elemen elemen array baik dengan yang ditentukan valarray atau dengan nilai jenis elemen.

valarray<Type>& operator%=(const valarray<Type>& right);

valarray<Type>& operator%=(const Type& right);

Parameter

right
Nilai valarray atau jenis elemen yang identik dengan operand valarray yang membagi, elemen-bijaksana, operand valarray.

Nilai hasil

Elemen valarray yang merupakan sisa dari pembagian operand valarray yang bijaksana elemen oleh right.

Contoh

// valarray_class_op_rem.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> vaL ( 6 ), vaR ( 6 );
   for ( i = 0 ; i < 6 ; i += 2 )
      vaL [ i ] =  53;
   for ( i = 1 ; i < 6 ; i += 2 )
      vaL [ i ] =  -67;
   for ( i = 0 ; i < 6 ; i++ )
      vaR [ i ] =  3*i+1;

   cout << "The initial valarray is: ( ";
      for ( i = 0 ; i < 6 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;

   cout << "The initial  right valarray is: ( ";
      for ( i = 0 ; i < 6 ; i++ )
         cout << vaR [ i ] << " ";
   cout << ")." << endl;

   vaL %= vaR;
   cout << "The remainders from the element-by-element "
        << "division is the"
        << endl << "valarray: ( ";
      for ( i = 0 ; i < 6 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;
}
The initial valarray is: ( 53 -67 53 -67 53 -67 ).
The initial  right valarray is: ( 1 4 7 10 13 16 ).
The remainders from the element-by-element division is the
valarray: ( 0 -3 4 -7 1 -3 ).

operator&=

Mendapatkan bitwise AND (&) elemen dalam array baik dengan elemen yang sesuai dalam yang ditentukan valarray atau dengan nilai jenis elemen.

valarray<Type>& operator&=(const valarray<Type>& right);

valarray<Type>& operator&=(const Type& right);

Parameter

right
Nilai valarray atau jenis elemen yang identik dengan operand valarray yang akan digabungkan, elemen-bijaksana, oleh bitwise AND (&) dengan operand valarray.

Nilai hasil

Elemen valarray yang bitwise AND (&) dari operand valarray oleh right

Keterangan

Operasi bitwise hanya dapat digunakan untuk memanipulasi bit dalam jenis data integral, seperti char dan int. Ini tidak berfungsi pada float, , double, long double, void, boolatau jenis data lain yang lebih kompleks.

BITWISE AND (&) berlaku untuk jenis data pada tingkat bit individual. Bit yang b1 diberikan dan b2, b1 & b2 adalah 1 jika kedua bit adalah 1; 0 jika setidaknya satu bit adalah 0.

Contoh

// valarray_class_op_bitand.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> vaL ( 10 ), vaR ( 10 );
   for ( i = 0 ; i < 10 ; i += 2 )
      vaL [ i ] =  0;
   for ( i = 1 ; i < 10 ; i += 2 )
      vaL [ i ] =  i-1;
   for ( i = 0 ; i < 10 ; i++ )
      vaR [ i ] =  i;

   cout << "The initial valarray is:  ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;

   cout << "The initial Right valarray is: ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << vaR [ i ] << " ";
   cout << ")." << endl;

   vaL &= vaR;
   cout << "The element-by-element result of "
        << "the bitwise AND operator&= is the"
        << endl << "valarray: ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;
}
The initial valarray is:  ( 0 0 0 2 0 4 0 6 0 8 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 8 9 ).
The element-by-element result of the bitwise AND operator&= is the
valarray: ( 0 0 0 2 0 4 0 6 0 8 ).

operator>>=

Kanan menggeser bit untuk setiap elemen valarray operand jumlah posisi tertentu atau dengan jumlah elemen bijaksana yang ditentukan oleh detik valarray.

valarray<Type>& operator>>=(const valarray<Type>& right);

valarray<Type>& operator>>=(const Type& right);

Parameter

right
Nilai yang menunjukkan jumlah pergeseran kanan atau valarray yang elemennya menunjukkan jumlah pergeseran kanan yang bijaksana elemen.

Nilai hasil

Elemen valarray yang telah digeser ke kanan jumlah yang ditentukan dalam right.

Keterangan

Nomor yang ditandatangani memiliki tanda-tanda dipertahankan.

Contoh

// valarray_class_op_rs.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> vaL ( 8 ), vaR ( 8 );
   for ( i = 0 ; i < 8 ; i += 2 )
      vaL [ i ] =  64;
   for ( i = 1 ; i < 8 ; i += 2 )
      vaL [ i ] =  -64;
   for ( i = 0 ; i < 8 ; i++ )
      vaR [ i ] =  i;

   cout << "The initial operand valarray is: ( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;

   cout << "The  right valarray is: ( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaR [ i ] << " ";
   cout << ")." << endl;

   vaL >>= vaR;
   cout << "The element-by-element result of "
        << "the right shift is the"
        << endl << "valarray: ( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;
}
The initial operand valarray is: ( 64 -64 64 -64 64 -64 64 -64 ).
The  right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the right shift is the
valarray: ( 64 -32 16 -8 4 -2 1 -1 ).

operator<<=

Kiri menggeser bit untuk setiap elemen valarray operan sejumlah posisi tertentu atau dengan jumlah elemen bijaksana yang ditentukan oleh detik valarray.

valarray<Type>& operator<<=(const valarray<Type>& right);

valarray<Type>& operator<<=(const Type& right);

Parameter

right
Nilai yang menunjukkan jumlah shift kiri atau valarray yang elemennya menunjukkan jumlah shift kiri yang bijaksana.

Nilai hasil

Elemen valarray yang telah digeser meninggalkan jumlah yang ditentukan dalam right.

Keterangan

Nomor yang ditandatangani memiliki tanda-tanda dipertahankan.

Contoh

// valarray_class_op_ls.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> vaL ( 8 ), vaR ( 8 );
   for ( i = 0 ; i < 8 ; i += 2 )
      vaL [ i ] =  1;
   for ( i = 1 ; i < 8 ; i += 2 )
      vaL [ i ] =  -1;
   for ( i = 0 ; i < 8 ; i++ )
      vaR [ i ] =  i;

   cout << "The initial operand valarray is: ( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;

   cout << "The  right valarray is: ( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaR [ i ] << " ";
   cout << ")." << endl;

   vaL <<= vaR;
   cout << "The element-by-element result of "
        << "the left shift"
        << endl << "on the operand array is the valarray:"
        << endl << "( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;
}
The initial operand valarray is: ( 1 -1 1 -1 1 -1 1 -1 ).
The  right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the left shift
on the operand array is the valarray:
( 1 -2 4 -8 16 -32 64 -128 ).

operator*=

Mengalikan elemen dari jenis elemen tertentu valarray atau nilai, elemen-bijaksana, ke operand valarray.

valarray<Type>& operator*=(const valarray<Type>& right);

valarray<Type>& operator*=(const Type& right);

Parameter

right
Nilai valarray atau jenis elemen yang identik dengan operand valarray yang akan mengalikan, elemen-bijaksana, operand valarray.

Nilai hasil

Elemen valarray yang merupakan produk elemen bijaksana dari operand valarray dan right.

Contoh

// valarray_op_emult.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> vaL ( 8 ), vaR ( 8 );
   for ( i = 0 ; i < 8 ; i += 2 )
      vaL [ i ] =  2;
   for ( i = 1 ; i < 8 ; i += 2 )
      vaL [ i ] =  -1;
   for ( i = 0 ; i < 8 ; i++ )
      vaR [ i ] =  i;

   cout << "The initial valarray is: ( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;

   cout << "The initial Right valarray is: ( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaR [ i ] << " ";
   cout << ")." << endl;

   vaL *= vaR;
   cout << "The element-by-element result of "
        << "the multiplication is the"
        << endl << "valarray: ( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;
}
/* Output:
The initial valarray is: ( 2 -1 2 -1 2 -1 2 -1 ).
The initial Right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the multiplication is the
valarray: ( 0 -1 4 -3 8 -5 12 -7 ).
*/

operator+

Operator unary yang menerapkan nilai plus untuk setiap elemen dalam valarray. Untuk nilai aritmatika normal, operasi ini tidak berpengaruh.

valarray<Type> operator+() const;

Nilai hasil

Elemen valarray yang merupakan unary plus hasil dari array operand.

Contoh

// valarray_op_eplus.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> vaL ( 10 );
   valarray<int> vaPLUS ( 10 );
   for ( i = 0 ; i < 10 ; i += 2 )
      vaL [ i ] =  -i;
   for ( i = 1 ; i < 10 ; i += 2 )
      vaL [ i ] =  i-1;

   cout << "The initial valarray is:  ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;

   vaPLUS = +vaL;
   cout << "The element-by-element result of "
        << "the operator+ is the"
        << endl << "valarray: ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << vaPLUS [ i ] << " ";
   cout << ")." << endl;
}
The initial valarray is:  ( 0 0 -2 2 -4 4 -6 6 -8 8 ).
The element-by-element result of the operator+ is the
valarray: ( 0 0 -2 2 -4 4 -6 6 -8 8 ).

operator+=

Menambahkan elemen dari jenis elemen yang ditentukan valarray atau nilai, elemen-bijaksana, ke operand valarray.

valarray<Type>& operator+=(const valarray<Type>& right);

valarray<Type>& operator+=(const Type& right);

Parameter

right
Nilai valarray atau jenis elemen yang identik dengan operand valarray yang akan ditambahkan, elemen-bijaksana, ke operand valarray.

Nilai hasil

Elemen valarray yang merupakan jumlah elemen bijaksana dari operand valarray dan right.

Contoh

// valarray_op_eadd.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> vaL ( 8 ), vaR ( 8 );
   for ( i = 0 ; i < 8 ; i += 2 )
      vaL [ i ] =  2;
   for ( i = 1 ; i < 8 ; i += 2 )
      vaL [ i ] =  -1;
   for ( i = 0 ; i < 8 ; i++ )
      vaR [ i ] =  i;

   cout << "The initial valarray is: ( ";
      for (i = 0 ; i < 8 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;

   cout << "The initial  right valarray is: ( ";
      for (i = 0 ; i < 8 ; i++ )
         cout << vaR [ i ] << " ";
   cout << ")." << endl;

   vaL += vaR;
   cout << "The element-by-element result of "
        << "the sum is the"
        << endl << "valarray: ( ";
      for (i = 0 ; i < 8 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;
}
The initial valarray is: ( 2 -1 2 -1 2 -1 2 -1 ).
The initial  right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the sum is the
valarray: ( 2 0 4 2 6 4 8 6 ).

operator-

Operator unary yang menerapkan negasi aritmatika ke setiap elemen dalam valarray.

valarray<Type> operator-() const;

Nilai hasil

Elemen valarray yang secara aritmetis dinegasikan dari elemen operand valarray.

Contoh

// valarray_op_eminus.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> vaL ( 10 );
   valarray<int> vaMINUS ( 10 );
   for ( i = 0 ; i < 10 ; i += 2 )
      vaL [ i ] =  -i;
   for ( i = 1 ; i < 10 ; i += 2 )
      vaL [ i ] =  i-1;

   cout << "The initial valarray is:  ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;

   vaMINUS = -vaL;
   cout << "The element-by-element result of "
        << "the operator- is the"
        << endl << "valarray: ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << vaMINUS [ i ] << " ";
   cout << ")." << endl;
}
The initial valarray is:  ( 0 0 -2 2 -4 4 -6 6 -8 8 ).
The element-by-element result of the operator- is the
valarray: ( 0 0 2 -2 4 -4 6 -6 8 -8 ).

operator-=

Mengurangi elemen dari jenis elemen tertentu valarray atau nilai, elemen-bijaksana, dari operand valarray.

valarray<Type>& operator-=(const valarray<Type>& right);

valarray<Type>& operator-=(const Type& right);

Parameter

right
Nilai valarray atau jenis elemen yang identik dengan operand valarray yang akan dikurangi, elemen-bijaksana, dari operan valarray.

Nilai hasil

Elemen valarray yang merupakan perbedaan bijaksana elemen dari operand valarray dan right.

Contoh

// valarray_op_esub.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> vaL ( 8 ), vaR ( 8 );
   for ( i = 0 ; i < 8 ; i += 2 )
      vaL [ i ] =  10;
   for ( i = 1 ; i < 8 ; i += 2 )
      vaL [ i ] =  0;
   for ( i = 0 ; i < 8 ; i++ )
      vaR [ i ] =  i;

   cout << "The initial valarray is: ( ";
      for (i = 0 ; i < 8 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;

   cout << "The initial  right valarray is: ( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaR [ i ] << " ";
   cout << ")." << endl;

   vaL -= vaR;
   cout << "The element-by-element result of "
        << "the difference is the"
        << endl << "valarray: ( ";
      for ( i = 0 ; i < 8 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;
}
The initial valarray is: ( 10 0 10 0 10 0 10 0 ).
The initial  right valarray is: ( 0 1 2 3 4 5 6 7 ).
The element-by-element result of the difference is the
valarray: ( 10 -1 8 -3 6 -5 4 -7 ).

operator/=

Membagi elemen operand valarray secara bijaksana dengan elemen yang ditentukan valarray atau nilai dari jenis elemen.

valarray<Type>& operator/=(const valarray<Type>& right);

valarray<Type>& operator/=(const Type& right);

Parameter

right
Nilai valarray atau jenis elemen yang identik dengan operand valarray yang akan dibagi, elemen-bijaksana, ke dalam operand valarray.

Nilai hasil

Elemen valarray yang merupakan kuota elemen bijaksana dari operand valarray dibagi dengan right.

Contoh

// valarray_op_ediv.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<double> vaL ( 6 ), vaR ( 6 );
   for ( i = 0 ; i < 6 ; i += 2 )
      vaL [ i ] =  100;
   for ( i = 1 ; i < 6 ; i += 2 )
      vaL [ i ] =  -100;
   for ( i = 0 ; i < 6 ; i++ )
      vaR [ i ] =  2*i;

   cout << "The initial valarray is: ( ";
      for (i = 0 ; i < 6 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;

   cout << "The initial Right valarray is: ( ";
      for (i = 0 ; i < 6 ; i++ )
         cout << vaR [ i ] << " ";
   cout << ")." << endl;

   vaL /= vaR;
   cout << "The element-by-element result of "
        << "the quotient is the"
        << endl << "valarray: ( ";
      for (i = 0 ; i < 6 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;
}
The initial valarray is: ( 100 -100 100 -100 100 -100 ).
The initial Right valarray is: ( 0 2 4 6 8 10 ).
The element-by-element result of the quotient is the
valarray: ( inf -50 25 -16.6667 12.5 -10 ).

operator=

Menetapkan elemen ke yang valarray nilainya ditentukan baik secara langsung atau sebagai bagian dari beberapa lainnya valarray atau oleh slice_array, , gslice_array, mask_arrayatau indirect_array.

valarray<Type>& operator=(const valarray<Type>& right);

valarray<Type>& operator=(valarray<Type>&& right);

valarray<Type>& operator=(const Type& val);

valarray<Type>& operator=(const slice_array<Type>& slicearray);

valarray<Type>& operator=(const gslice_array<Type>& gslicearray);

valarray<Type>& operator=(const mask_array<Type>& maskarray);

valarray<Type>& operator=(const indirect_array<Type>& indarray);

Parameter

right
yang valarray akan disalin ke dalam operand valarray.

val
Nilai yang akan ditetapkan ke elemen operand valarray.

slicearray
yang slice_array akan disalin ke dalam operand valarray.

gslicearray
yang gslice_array akan disalin ke dalam operand valarray.

maskarray
yang mask_array akan disalin ke dalam operand valarray.

indarray
yang indirect_array akan disalin ke dalam operand valarray.

Nilai hasil

Operator anggota pertama mengganti urutan yang dikontrol dengan salinan urutan yang dikendalikan oleh right.

Operator anggota kedua sama dengan yang pertama, tetapi dengan deklarator referensi Rvalue: &&.

Operator anggota ketiga mengganti setiap elemen urutan yang dikontrol dengan salinan val.

Operator anggota yang tersisa menggantikan elemen urutan terkontrol yang dipilih oleh argumen mereka, yang hanya dihasilkan oleh operator[].

Jika nilai anggota dalam urutan penggantian yang dikontrol tergantung pada anggota dalam urutan awal yang dikontrol, hasilnya tidak ditentukan.

Keterangan

Jika panjang urutan terkontrol berubah, biasanya hasilnya tidak ditentukan. Namun, dalam implementasi ini, efeknya hanya untuk membatalkan penunjuk atau referensi ke elemen dalam urutan yang dikontrol.

Contoh

// valarray_op_assign.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> va ( 10 ), vaR ( 10 );
   for ( i = 0 ; i < 10 ; i += 1 )
      va [ i ] = i;
   for ( i = 0 ; i < 10 ; i+=1 )
      vaR [ i ] = 10 - i;

   cout << "The operand valarray va is:";
   for ( i = 0 ; i < 10 ; i++ )
      cout << " " << va [ i ];
   cout << endl;

   cout << "The operand valarray vaR is:";
      for ( i = 0 ; i < 10 ; i++ )
         cout << " " << vaR [ i ];
   cout << endl;

   // Assigning vaR to va with the first member function
   va = vaR;
   cout << "The reassigned valarray va is:";
   for ( i = 0 ; i < 10 ; i++ )
      cout << " " << va [ i ];
   cout << endl;

   // Assigning elements of value 10 to va
   // with the second member function
   va = 10;
   cout << "The reassigned valarray va is:";
      for ( i = 0 ; i < 10 ; i++ )
         cout << " " << va [ i ];
   cout << endl;
}
The operand valarray va is: 0 1 2 3 4 5 6 7 8 9
The operand valarray vaR is: 10 9 8 7 6 5 4 3 2 1
The reassigned valarray va is: 10 9 8 7 6 5 4 3 2 1
The reassigned valarray va is: 10 10 10 10 10 10 10 10 10 10

operator[]

Mengembalikan referensi ke elemen atau nilainya pada indeks tertentu atau subset tertentu.

Type& operator[](size_t index);

slice_array<Type> operator[](slice slicearray);

gslice_array<Type> operator[](const gslice& gslicearray);

mask_array<Type> operator[](const valarray<bool>& boolarray);

indirect_array<Type> operator[](const valarray<size_t>& indarray);

Type operator[](size_t index) const;

valarray<Type> operator[](slice slicearray) const;

valarray<Type> operator[](const gslice& gslicearray) const;

valarray<Type> operator[](const valarray<bool>& boolarray) const;

valarray<Type> operator[](const valarray<size_t>& indarray) const;

Parameter

index
Indeks elemen yang akan ditetapkan nilainya.

slicearray
slice_array Dari yang valarray menentukan subset yang akan dipilih atau dikembalikan ke yang baruvalarray.

gslicearray
gslice_array Dari yang valarray menentukan subset yang akan dipilih atau dikembalikan ke yang baruvalarray.

boolarray
bool_array Dari yang valarray menentukan subset yang akan dipilih atau dikembalikan ke yang baruvalarray.

indarray
indirect_array Dari yang valarray menentukan subset yang akan dipilih atau dikembalikan ke yang baruvalarray.

Nilai hasil

Referensi ke elemen atau nilainya pada indeks tertentu atau subset tertentu.

Keterangan

Operator anggota kelebihan beban untuk menyediakan beberapa cara untuk memilih urutan elemen dari antara yang dikendalikan oleh *this. Grup pertama yang terdiri dari lima operator anggota bekerja sama dengan berbagai kelebihan beban operator= (dan operator penetapan lainnya) untuk memungkinkan penggantian selektif (pemotongan) dari urutan yang dikontrol. Elemen yang dipilih harus ada.

Saat dikompilasi dengan menggunakan _ITERATOR_DEBUG_LEVEL yang didefinisikan sebagai 1 atau 2, kesalahan runtime terjadi jika Anda mencoba mengakses elemen di luar batas valarray. Untuk informasi selengkapnya, lihat Iterator yang diperiksa.

Contoh

Lihat contoh untuk slice::slice dan gslice::gslice untuk contoh cara mendeklarasikan dan menggunakan operator[].

operator^=

Mendapatkan bitwise eksklusif atau (^) dari dengan valarray yang ditentukan valarray atau nilai dari jenis elemen.

valarray<Type>& operator^=(const valarray<Type>& right);

valarray<Type>& operator^=(const Type& right);

Parameter

right
Nilai valarray atau jenis elemen yang identik dengan operand valarray yang akan digabungkan oleh operator eksklusif bitwise atau (XOR) (^) dengan operand valarray.

Nilai hasil

Elemen valarray yang bitwise eksklusif atau (XOR) dari operand valarray dan right.

Keterangan

Bitwise eksklusif atau, disebut sebagai XOR dan ditandai oleh operator ^, memiliki semantik berikut: Bit yang diberikan b1 dan b2, b1 ^ b2 adalah 1 jika tepat salah satu elemen adalah 1, dan 0 jika kedua elemen adalah 0 atau 1.

Contoh

// valarray_op_exor.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
    using namespace std;
    int i;

    valarray<int> vaL ( 10 ), vaR ( 10 );
    for ( i = 0 ; i < 10 ; i += 2 )
        vaL [ i ] =  1;
    for ( i = 1 ; i < 10 ; i += 2 )
        vaL [ i ] =  0;
    for ( i = 0 ; i < 10 ; i += 3 )
        vaR [ i ] =  i;
    for ( i = 1 ; i < 10 ; i += 3 )
        vaR [ i ] =  i-1;
    for ( i = 2 ; i < 10 ; i += 3 )
        vaR [ i ] =  i-1;

    cout << "The initial operand valarray is:  ( ";
        for (i = 0 ; i < 10 ; i++ )
            cout << vaL [ i ] << " ";
    cout << ")." << endl;

    cout << "The  right valarray is: ( ";
        for ( i = 0 ; i < 10 ; i++ )
            cout << vaR [ i ] << " ";
    cout << ")." << endl;

    vaL ^= vaR;
    cout << "The element-by-element result of "
        << "the bitwise XOR operator^= is the"
        << endl << "valarray: ( ";
        for (i = 0 ; i < 10 ; i++ )
            cout << vaL [ i ] << " ";
    cout << ")." << endl;
}
The initial operand valarray is:  ( 1 0 1 0 1 0 1 0 1 0 ).
The  right valarray is: ( 0 0 1 3 3 4 6 6 7 9 ).
The element-by-element result of the bitwise XOR operator^= is the
valarray: ( 1 0 0 3 2 4 7 6 6 9 ).

operator|=

Mendapatkan bitwise OR (|) elemen dalam array baik dengan elemen yang sesuai dalam yang ditentukan valarray atau dengan nilai jenis elemen.

valarray<Type>& operator|=(const valarray<Type>& right);

valarray<Type>& operator|=(const Type& right);

Parameter

right
Nilai valarray atau jenis elemen yang identik dengan operand valarray yang akan digabungkan, elemen-bijaksana, oleh bitwise OR (|) dengan operand valarray.

Nilai hasil

Yang valarray elemennya adalah bitwise elemen bijaksana ATAU (|) dari operand valarray oleh right.

Keterangan

Operasi bitwise hanya dapat digunakan untuk memanipulasi bit dalam jenis data integral seperti char dan int. Ini tidak berfungsi pada float, , double, long double, void, boolatau jenis data lain yang lebih kompleks.

Bitwise OR (|) berlaku untuk jenis data pada tingkat bit individual. Bit yang b1 diberikan dan b2, b1 | b2 adalah 1 jika setidaknya salah satu bit adalah 1; 0 jika kedua bit adalah 0.

Contoh

// valarray_class_op_bitor.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> vaL ( 10 ), vaR ( 10 );
   for ( i = 0 ; i < 10 ; i += 2 )
      vaL [ i ] =  1;
   for ( i = 1 ; i < 10 ; i += 2 )
      vaL [ i ] =  0;
   for ( i = 0 ; i < 10 ; i += 3 )
      vaR [ i ] =  i;
   for ( i = 1 ; i < 10 ; i += 3 )
      vaR [ i ] =  i-1;
   for ( i = 2 ; i < 10 ; i += 3 )
      vaR [ i ] =  i-1;

   cout << "The initial operand valarray is:"
        << endl << "( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;

   cout << "The  right valarray is:"
        << endl << "( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << vaR [ i ] << " ";
   cout << ")." << endl;

   vaL |= vaR;
   cout << "The element-by-element result of "
        << "the bitwise OR"
        << endl << "operator|= is the valarray:"
        << endl << "( ";
      for (i = 0 ; i < 10 ; i++ )
         cout << vaL [ i ] << " ";
   cout << ")." << endl;
}
The initial operand valarray is:
( 1 0 1 0 1 0 1 0 1 0 ).
The  right valarray is:
( 0 0 1 3 3 4 6 6 7 9 ).
The element-by-element result of the bitwise OR
operator|= is the valarray:
( 1 0 1 3 3 4 7 6 7 9 ).

operator~

Operator unary yang mendapatkan pelengkap bitwise dari nilai setiap elemen dalam valarray.

valarray<Type> operator~() const;

Nilai hasil

Nilai valarray yang merupakan pelengkap bitwise tidak biasa dari nilai elemen operand valarray.

Keterangan

Operasi bitwise hanya dapat memanipulasi bit dalam jenis integral, seperti char dan int. Ini tidak berfungsi pada float, , double, long double, void, boolatau jenis data lain yang lebih kompleks.

Operator ~ pelengkap bitwise tidak biasa berlaku untuk jenis data pada tingkat bit individual. Diberikan bit b, ~b adalah 1 jika b adalah 0 dan 0 jika b adalah 1.

Contoh

// valarray_op_bitnot.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
    using namespace std;
    int i;

    valarray<unsigned short int> vaL1 ( 10 );
    valarray<unsigned short int> vaNOT1 ( 10 );
    for ( i = 0 ; i < 10 ; i += 2 )
        vaL1 [ i ] =  i;
    for ( i = 1 ; i < 10 ; i += 2 )
        vaL1 [ i ] =  5*i;

    cout << "The initial valarray <unsigned short int> is:  ( ";
        for ( i = 0 ; i < 10 ; i++ )
            cout << vaL1 [ i ] << " ";
    cout << ")." << endl;

    vaNOT1 = ~vaL1;
    cout << "The element-by-element result of "
        << "the bitwise NOT operator~ is the"
        << endl << "valarray: ( ";
        for ( i = 0 ; i < 10 ; i++ )
            cout << vaNOT1 [ i ] << " ";
    cout << ")." << endl << endl;

    valarray<int> vaL2 ( 10 );
    valarray<int> vaNOT2 ( 10 );
    for ( i = 0 ; i < 10 ; i += 2 )
        vaL2 [ i ] =  i;
    for ( i = 1 ; i < 10 ; i += 2 )
        vaL2 [ i ] =  -2 * i;

    cout << "The initial valarray <int> is:  ( ";
        for ( i = 0 ; i < 10 ; i++ )
            cout << vaL2 [ i ] << " ";
    cout << ")." << endl;

    vaNOT2 = ~vaL2;
    cout << "The element-by-element result of "
        << "the bitwise NOT operator~ is the"
        << endl << "valarray: ( ";
        for ( i = 0 ; i < 10 ; i++ )
            cout << vaNOT2 [ i ] << " ";
    cout << ")." << endl;

    // The negative numbers are represented using
    // the two's complement approach, so adding one
    // to the flipped bits returns the negative elements
    vaNOT2 = vaNOT2 + 1;
    cout << "The element-by-element result of "
        << "adding one"
        << endl << "is the negative of the "
        << "original elements the"
        << endl << "valarray: ( ";
        for ( i = 0 ; i < 10 ; i++ )
            cout << vaNOT2 [ i ] << " ";
    cout << ")." << endl;
}
The initial valarray <unsigned short int> is:  ( 0 5 2 15 4 25 6 35 8 45 ).
The element-by-element result of the bitwise NOT operator~ is the
valarray: ( 65535 65530 65533 65520 65531 65510 65529 65500 65527 65490 ).

The initial valarray <int> is:  ( 0 -2 2 -6 4 -10 6 -14 8 -18 ).
The element-by-element result of the bitwise NOT operator~ is the
valarray: ( -1 1 -3 5 -5 9 -7 13 -9 17 ).
The element-by-element result of adding one
is the negative of the original elements the
valarray: ( 0 2 -2 6 -4 10 -6 14 -8 18 ).

resize

Mengubah jumlah elemen dalam menjadi valarray angka tertentu.

void resize(
    size_t new_size);

void resize(
    size_t new_size,
    const Type val);

Parameter

new_size
Jumlah elemen dalam perubahan ukuran valarray.

val
Nilai yang akan diberikan ke elemen dari mengubah ukuran valarray.

Keterangan

Fungsi anggota pertama menginisialisasi elemen dengan konstruktor default mereka.

Setiap pointer atau referensi ke elemen dalam urutan terkontrol tidak valid.

Contoh

Contoh berikut menunjukkan penggunaan valarray::resize fungsi anggota.

// valarray_resize.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main()
{
    using namespace std;
    int i;
    size_t size1, sizeNew;

    valarray<int> va1(10);
    for (i = 0; i < 10; i+=1)
        va1[i] = i;

    cout << "The valarray contains ( ";
        for (i = 0; i < 10; i++)
            cout << va1[i] << " ";
    cout << ")." << endl;

    size1 = va1.size();
    cout << "The number of elements in the valarray is: "
         << size1  << "." <<endl << endl;

    va1.resize(15, 10);

    cout << "The valarray contains ( ";
        for (i = 0; i < 15; i++)
            cout << va1[i] << " ";
    cout << ")." << endl;
    sizeNew = va1.size();
    cout << "The number of elements in the resized valarray is: "
         << sizeNew  << "." <<endl << endl;
}
The valarray contains ( 0 1 2 3 4 5 6 7 8 9 ).
The number of elements in the valarray is: 10.

The valarray contains ( 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ).
The number of elements in the resized valarray is: 15.

shift

Menggeser semua elemen dalam valarray dengan jumlah tempat tertentu.

valarray<Type> shift(int count) const;

Parameter

count
Jumlah tempat elemen akan digeser ke depan.

Nilai hasil

valarray Baru di mana semua elemen telah dipindahkan count posisi ke arah depan valarray, atau ke kiri jika dibandingkan dengan posisinya dalam operand valarray.

Keterangan

Nilai count positif menggeser elemen yang kiri count tempat, dengan nol isi.

Nilai count negatif menggeser elemen ke tempat yang tepat count , dengan pengisian nol.

Contoh

// valarray_shift.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
   using namespace std;
   int i;

   valarray<int> va1 ( 10 ), va2 ( 10 );
   for ( i = 0 ; i < 10 ; i += 1 )
      va1 [ i ] =  i;
   for ( i = 0 ; i < 10 ; i += 1 )
      va2 [ i ] = 10 - i;

   cout << "The operand valarray va1(10) is: ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << va1 [ i ] << " ";
   cout << ")." << endl;

   // A positive parameter shifts elements left
   va1 = va1.shift ( 4 );
   cout << "The shifted valarray va1 is: va1.shift (4) = ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << va1 [ i ] << " ";
   cout << ")." << endl;

   cout << "The operand valarray va2(10) is: ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << va2 [ i ] << " ";
   cout << ")." << endl;

   // A negative parameter shifts elements right
   va2 = va2.shift ( - 4 );
   cout << "The shifted valarray va2 is: va2.shift (-4) = ( ";
      for ( i = 0 ; i < 10 ; i++ )
         cout << va2 [ i ] << " ";
   cout << ")." << endl;
}
The operand valarray va1(10) is: ( 0 1 2 3 4 5 6 7 8 9 ).
The shifted valarray va1 is: va1.shift (4) = ( 4 5 6 7 8 9 0 0 0 0 ).
The operand valarray va2(10) is: ( 10 9 8 7 6 5 4 3 2 1 ).
The shifted valarray va2 is: va2.shift (-4) = ( 0 0 0 0 10 9 8 7 6 5 ).

size

Menemukan jumlah elemen dalam valarray.

size_t size() const;

Nilai hasil

Jumlah elemen dalam operand valarray.

Contoh

Contoh berikut menunjukkan penggunaan valarray::size fungsi anggota.

// valarray_size.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main()
{
    using namespace std;
    int i;
    size_t size1, size2;

    valarray<int> va1(10), va2(12);
    for (i = 0; i < 10; i += 1)
        va1[i] =  i;
    for (i = 0; i < 10; i += 1)
        va2[i] =  i;

    cout << "The operand valarray va1(10) is: ( ";
        for (i = 0; i < 10; i++)
            cout << va1[i] << " ";
    cout << ")." << endl;

    size1 = va1.size();
    cout << "The number of elements in the valarray va1 is: va1.size = "
         << size1  << "." <<endl << endl;

    cout << "The operand valarray va2(12) is: ( ";
        for (i = 0; i < 10; i++)
            cout << va2[i] << " ";
    cout << ")." << endl;

    size2 = va2.size();
    cout << "The number of elements in the valarray va2 is: va2.size = "
         << size2  << "." << endl << endl;

    // Initializing two more elements to va2
    va2[10] = 10;
    va2[11] = 11;
    cout << "After initializing two more elements,\n"
         << "the operand valarray va2(12) is now: ( ";
        for (i = 0; i < 12; i++)
            cout << va2[i] << " ";
    cout << ")." << endl;
    cout << "The number of elements in the valarray va2 is still: "
         << size2  << "." << endl;
}
The operand valarray va1(10) is: ( 0 1 2 3 4 5 6 7 8 9 ).
The number of elements in the valarray va1 is: va1.size = 10.

The operand valarray va2(12) is: ( 0 1 2 3 4 5 6 7 8 9 ).
The number of elements in the valarray va2 is: va2.size = 12.

After initializing two more elements,
the operand valarray va2(12) is now: ( 0 1 2 3 4 5 6 7 8 9 10 11 ).
The number of elements in the valarray va2 is still: 12.

sum

Menentukan jumlah semua elemen dalam valarray panjang bukan nol.

Type sum() const;

Nilai hasil

Jumlah elemen operand valarray.

Keterangan

Jika panjangnya lebih besar dari satu, fungsi anggota menambahkan nilai ke jumlah dengan menerapkan operator+= antara pasangan elemen kelas Type. Ini berarti operator perlu disediakan untuk elemen jenis Type.

Contoh

// valarray_sum.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
    using namespace std;
    int i;
    int sumva = 0;

    valarray<int> va ( 10 );
    for ( i = 0 ; i < 10 ; i+=1 )
        va [ i ] =  i;

    cout << "The operand valarray va (10) is: ( ";
        for ( i = 0 ; i < 10 ; i++ )
            cout << va [ i ] << " ";
    cout << ")." << endl;

    sumva = va.sum ( );
    cout << "The sum of elements in the valarray is: "
        << sumva  << "." <<endl;
}
The operand valarray va (10) is: ( 0 1 2 3 4 5 6 7 8 9 ).
The sum of elements in the valarray is: 45.

swap

Menukar elemen dari dua valarray objek.

void swap(valarray& right);

Parameter

right
Yang valarray menyediakan elemen yang akan ditukar.

Keterangan

Fungsi anggota menukar urutan terkontrol antara *this dan right. Ini melakukannya dalam waktu konstan, itu tidak melemparkan pengecualian, dan tidak membatalkan referensi, penunjuk, atau iterator ke elemen dalam dua urutan yang dikontrol.

valarray

Membangun valarray ukuran tertentu atau dengan elemen dari nilai tertentu atau sebagai salinan lain valarray atau subset dari yang lain valarray.

valarray();

explicit valarray(
    size_t count);

valarray(
    const Type& val,
    size_t count);

valarray(
    const Type* ptr,
    size_t count);

valarray(
    const valarray<Type>& right);

valarray(
    const slice_array<Type>& sliceArray);

valarray(
    const gslice_array<Type>& gsliceArray);

valarray(
    const mask_array<Type>& maskArray);

valarray(
    const indirect_array<Type>& indArray);

valarray(
    valarray<Type>&& tight);

valarray(
    initializer_list<Type> iList);

Parameter

count
Jumlah elemen yang akan berada di valarray.

val
Nilai yang akan digunakan dalam menginisialisasi elemen dalam valarray.

ptr
Penunjuk ke nilai yang akan digunakan untuk menginisialisasi elemen di valarray.

right
Yang sudah ada untuk menginisialisasi valarray yang baru valarray.

sliceArray
Yang slice_array nilai elemennya akan digunakan dalam menginisialisasi elemen yang valarray sedang dibangun.

gsliceArray
Yang gslice_array nilai elemennya akan digunakan dalam menginisialisasi elemen yang valarray sedang dibangun.

maskArray
Yang mask_array nilai elemennya akan digunakan dalam menginisialisasi elemen yang valarray sedang dibangun.

indArray
Yang indirect_array nilai elemennya akan digunakan dalam menginisialisasi elemen yang valarray sedang dibangun.

iList
yang initializer_list berisi elemen yang akan disalin.

Keterangan

Konstruktor pertama (default) menginisialisasi objek ke kosong valarray. Tiga konstruktor berikutnya masing-masing menginisialisasi objek ke valarray elemen count sebagai berikut:

  • Untuk eksplisit valarray(size_t count), setiap elemen diinisialisasi dengan konstruktor default.

  • Untuk valarray(const Type& val, count), setiap elemen diinisialisasi dengan val.

  • Untuk valarray(const Type* ptr, count), elemen pada posisi I diinisialisasi dengan ptr[I].

Setiap konstruktor yang tersisa menginisialisasi objek ke objek yang valarray<Type> ditentukan oleh subset yang ditentukan dalam argumen.

Konstruktor terakhir sama dengan yang terakhir, tetapi dengan deklarator referensi Rvalue: &&.

Contoh

// valarray_ctor.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main()
{
    using namespace std;
    int i;

    // The second member function
    valarray<int> va(10);
    for (auto i : va){
        va[i] = 2 * (i + 1);
    }

    cout << "The operand valarray va is:\n(";
    for (auto i : va) {
        cout << " " << va[i];
    }
    cout << " )" << endl;

    slice Slice(2, 4, 3);

    // The fifth member function
    valarray<int> vaSlice = va[Slice];

    cout << "The new valarray initialized from the slice is vaSlice =\n"
        << "va[slice( 2, 4, 3)] = (";
    for (int i = 0; i < 3; i++) {
        cout << " " << vaSlice[i];
    }
    cout << " )" << endl;

    valarray<int> va2{{ 1, 2, 3, 4 }};
    for (auto& v : va2) {
        cout << v << " ";
    }
    cout << endl;
}
The operand valarray va is:
( 0 2 2 2 2 2 2 2 2 2 )
The new valarray initialized from the slice is vaSlice =
va[slice( 2, 4, 3)] = ( 0 0 0 )
1 2 3 4

value_type

Jenis yang mewakili jenis elemen yang disimpan dalam valarray.

typedef Type value_type;

Keterangan

Jenisnya adalah sinonim untuk parameter Typetemplat .

Contoh

// valarray_value_type.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>

int main( )
{
    using namespace std;
    int i;
    valarray<int> va ( 10 );
    for ( i = 0 ; i < 10 ; i += 2 )
        va [ i ] =  i;
    for ( i = 1 ; i < 10 ; i += 2 )
        va [ i ] =  -1;

    cout << "The initial operand valarray is:  ( ";
        for ( i = 0 ; i < 10 ; i++ )
            cout << va [ i ] << " ";
    cout << ")." << endl;

    // value_type declaration and initialization:
    valarray<int>::value_type Right = 10;

    cout << "The declared value_type Right is: "
            << Right << endl;
    va *= Right;
    cout << "The resulting valarray is:  ( ";
        for ( i = 0 ; i < 10 ; i++ )
            cout << va [ i ] << " ";
    cout << ")." << endl;
}
The initial operand valarray is:  ( 0 -1 2 -1 4 -1 6 -1 8 -1 ).
The declared value_type Right is: 10
The resulting valarray is:  ( 0 -10 20 -10 40 -10 60 -10 80 -10 ).

Lihat juga

Keamanan utas di Pustaka Standar C++