valarray
sınıfı
Sınıf şablonu valarray<Type>
, dizi olarak depolanan, yüksek hızlı matematik işlemleri için tasarlanmış ve hesaplama performansı için iyileştirilmiş türdeki öğelerin Type
dizisini denetleen bir nesneyi açıklar.
Açıklamalar
sınıfı, sıralı bir değer kümesinin matematiksel kavramının bir gösterimidir. Öğeleri sıfırdan sıralı olarak numaralandırılır. sınıfı, gibi vector
birinci sınıf dizi kapsayıcılarının desteklediği özelliklerin bazılarını desteklediğinden ancak tümünü desteklemediğinden, kapsayıcıya yakın olarak tanımlanır. Sınıf şablonundan vector
iki önemli şekilde farklıdır:
Aynı türde ve uzunluktaki nesnelerin ilgili öğeleri
valarray<Type>
arasında birçok aritmetik işlem tanımlar. Örneğinvarr_x* = cos(varr_y) + sin(varr_z)
, .nesnesini aşırı yükleyerek
operator[]
alt simgevalarray<Type>
oluşturmanın çeşitli ilginç yollarını tanımlar.
sınıfının Type
nesnesi:
Genel bir varsayılan oluşturucuya, yıkıcıya, kopya oluşturucuya ve geleneksel davranışa sahip atama işlecine sahiptir.
Gerektiğinde, kayan nokta türleri için tanımlanan aritmetik işleçleri ve matematik işlevlerini geleneksel davranışla tanımlar.
Özellikle, kopya yapımı ile varsayılan yapı arasında küçük farklar olmayabilir ve bunu atama takip edebilir. Sınıfın Type
nesneleri üzerindeki işlemlerin hiçbiri özel durumlar oluşturamayabilir.
Üyeler
Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
valarray |
Belirli bir valarray boyutta veya belirli bir değerin öğeleriyle ya da başka bir veya başka valarray bir alt kümesinin valarray kopyası olarak oluşturur. |
Tür tanımları
Veri Akışı Adı | Açıklama |
---|---|
value_type |
içinde depolanan öğenin türünü temsil eden bir valarray tür. |
İşlevler
Veri Akışı Adı | Açıklama |
---|---|
apply |
Bir öğesinin her öğesine belirtilen bir valarray işlevi uygular. |
cshift |
Döngüsel olarak içindeki valarray tüm öğeleri belirtilen sayıda konumla değiştirir. |
free |
tarafından kullanılan belleği serbest bırakır valarray . |
max |
içindeki valarray en büyük öğeyi bulur. |
min |
içindeki valarray en küçük öğeyi bulur. |
resize |
Öğeleri gerektiği gibi ekleyerek veya kaldırarak, bir valarray içindeki öğe sayısını belirtilen bir sayıya değiştirir. |
shift |
içindeki tüm öğeleri valarray belirtilen sayıda konumla değiştirir. |
size |
içindeki valarray öğe sayısını bulur. |
sum |
Sıfır olmayan uzunluktaki valarray tüm öğelerin toplamını belirler. |
swap |
İşleçler
Veri Akışı Adı | Açıklama |
---|---|
operator! |
içindeki her öğenin mantıksal NOT (! ) değerlerini alan birli valarray işleç. |
operator%= |
Bir dizi öğesinin öğelerini belirtilen valarray veya öğe türündeki bir değere bölmenin geri kalanını alır. |
operator&= |
Bir dizideki öğelerin bit düzeyinde AND (& ) değerini, belirtilen valarray bir öğedeki karşılık gelen öğelerle veya öğe türündeki bir değerle alır. |
operator>>= |
bir valarray işlenenin her öğesi için bitleri belirtilen sayıda konumla veya bir saniyeyle valarray belirtilen öğeye göre bir öğeye göre sağa kaydırıyor. |
operator<<= |
Bir işlenenin her öğesi valarray için bitleri belirtilen sayıda konum veya bir saniye valarray ile belirtilen öğeye göre bir miktar sola kaydırıyor. |
operator*= |
Belirtilen valarray veya öğe türündeki bir değerin öğelerini bir işlenenle valarray çarpar. |
operator+ |
içindeki her öğeye artı uygulayan birli valarray işleç. Normal aritmetik türlerde bu işlecin hiçbir etkisi yoktur. |
operator+= |
belirtilen valarray veya öğe türündeki bir değerin öğelerini işlenene valarray ekler. |
operator- |
içindeki her öğeye aritmetik bir olumsuzlama uygulayan bir valarray tekli işleç. |
operator-= |
Belirtilen valarray veya öğe türündeki bir değerin öğelerini bir işlenenden valarray çıkarır. |
operator/= |
İşlenen valarray öğe temelli bir öğeyi, belirtilen valarray veya öğe türündeki bir değerin öğelerine böler. |
operator= |
Değerleri doğrudan veya başka valarray bir valarray öğesinin parçası olarak ya da , gslice_array , mask_array veya indirect_array tarafından belirtilen bir slice_array öğesine öğe atar. |
operator[] |
Belirtilen dizinde veya belirtilen alt kümede bir öğeye veya değerine başvuru döndürür. |
operator^= |
Belirtilen valarray veya öğe türünün değerine sahip bit valarray düzeyinde özel veya (^ ) değerini alır. |
operator|= |
Bir dizideki öğelerin bit düzeyinde OR (| ) değerini, belirtilen valarray bir içindeki karşılık gelen öğelerle veya öğe türündeki bir değerle alır. |
operator~ |
içindeki her öğenin bit düzeyinde tamamlayıcı (~ ) değerlerini alan birli valarray işleç. |
apply
Bir öğesinin her öğesine belirtilen bir valarray
işlevi uygular.
valarray<Type> apply(Type function_object(Type)) const;
valarray<Type> apply(Type function_object(const Type&)) const;
Parametreler
function_object(Type)
işleneninin her öğesine valarray
uygulanacak işlev nesnesi.
function_object(const Type&)
İşlenen valarray
öğesinin her öğesine uygulanacak öğelerin işlev nesnesiconst
.
Dönüş değeri
valarray
öğeleri function_object
işlenenin valarray
öğelerine öğeye göre uygulanmış olan.
Açıklamalar
üye işlevi, her elem
biri öğesinin sonucu function_object((*this)[elem])
olan , uzunluğunda size
bir nesnesi valarray<Type>
döndürür.
Örnek
// 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
Döngüsel olarak içindeki valarray
tüm öğeleri belirtilen sayıda konumla değiştirir.
valarray<Type> cshift(int count) const;
Parametreler
count
Öğelerin ileri kaydırılacağı yer sayısı.
Dönüş değeri
Tüm öğelerin önünde döngüsel olarak veya işlenendeki valarray
konumlarıyla valarray
karşılaştırıldığında sola doğru hareket ettirildiği count
yeni valarray
bir .
Açıklamalar
Pozitif değeri count
, öğeleri döngüsel olarak sola count
doğru kaydırır.
Negatif değeri count
, öğeleri döngüsel olarak doğru count
yerlere kaydırır.
Örnek
// 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
tarafından kullanılan belleği serbest bırakır valarray
.
void free();
Açıklamalar
Bu standart olmayan işlev, boş valarray
bir atamakla eşdeğerdir. Örneğin:
valarray<T> v;
v = valarray<T>();
// equivalent to v.free()
max
içindeki valarray
en büyük öğeyi bulur.
Type max() const;
Dönüş değeri
İşlenen valarray
içindeki öğelerin en büyük değeri.
Açıklamalar
üye işlevi, öğesi Type
için işleçlerin sağlanması gereken sınıfı Type
öğelerinin çiftleri arasında işleç< veya işleç> uygulayarak değerleri karşılaştırır.
Örnek
// 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
içindeki valarray
en küçük öğeyi bulur.
Type min() const;
Dönüş değeri
İşlenen valarray
içindeki öğelerin en düşük değeri.
Açıklamalar
üye işlevi, öğesi Type
için işleçlerin sağlanması gereken sınıfı Type
öğelerinin çiftleri arasında işleç< veya işleç> uygulayarak değerleri karşılaştırır.
Örnek
// 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!
içindeki her öğenin mantıksal NOT (!
) değerlerini alan birli valarray
işleç.
valarray<bool> operator!() const;
Dönüş değeri
işleneninin valarray
öğe değerlerinin mantıksal olumsuzlaması olan Boole değerlerinin valarray
değeri.
Açıklamalar
tarafından !
belirtilen DEĞİl mantıksal işlemi, tüm sıfır değerlerini içine ve sıfır olmayan tüm değerleri true
içine dönüştürdüğünden öğeleri mantıksal olarak yok eder false
. Boole değerlerinin döndürülen valarray
değeri işlenenle valarray
aynı boyuttadır.
Örnek
// 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%=
Bir dizi öğesinin öğelerini belirtilen valarray
veya öğe türündeki bir değere bölmenin geri kalanını alır.
valarray<Type>& operator%=(const valarray<Type>& right);
valarray<Type>& operator%=(const Type& right);
Parametreler
right
valarray
Bir öğe türünün veya değeri, valarray
işleneni valarray
bölmek için işlenenle aynıdır.
Dönüş değeri
valarray
öğeleri, tarafından right
işlenenin valarray
öğe açısından bölümünden kalan öğeleridir.
Örnek
// 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&=
Bir dizideki öğelerin bit düzeyinde AND (&
) değerini, belirtilen valarray
bir öğedeki karşılık gelen öğelerle veya öğe türündeki bir değerle alır.
valarray<Type>& operator&=(const valarray<Type>& right);
valarray<Type>& operator&=(const Type& right);
Parametreler
right
valarray
bit düzeyinde AND (&
) tarafından işlenen ile valarray
birleştirilecek işlenenle valarray
aynı öğe türünün veya değeri.
Dönüş değeri
valarray
Öğeleri işlenenin bit tabanlı AND (&
) valarray
olanright
Açıklamalar
Bit düzeyinde bir işlem yalnızca ve int
gibi char
tam sayı veri türlerindeki bitleri işlemek için kullanılabilir. , , double
, , void
long double
, , bool
veya diğer daha karmaşık veri türlerinde float
çalışmaz.
Bit düzeyinde AND (&
), tek tek bit düzeyindeki veri türüne uygulanır. Verilen bitler b1
ve b2
, b1 & b2
her iki bit de 1 ise 1, en az bir bit 0 ise 0 olur.
Örnek
// 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>>=
bir valarray
işlenenin her öğesi için bitleri belirtilen sayıda konumla veya bir saniyeyle valarray
belirtilen öğeye göre bir öğeye göre sağa kaydırıyor.
valarray<Type>& operator>>=(const valarray<Type>& right);
valarray<Type>& operator>>=(const Type& right);
Parametreler
right
Sağ kaydırma miktarını veya öğeleri öğeye göre sağ kaydırma miktarını gösteren değer valarray
.
Dönüş değeri
valarray
Öğeleri içinde right
belirtilen miktarda sağa kaydırılmış olan bir.
Açıklamalar
İmzalı sayıların işaretleri korunur.
Örnek
// 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<<=
Bir işlenenin her öğesi valarray
için bitleri belirtilen sayıda konum veya bir saniye valarray
ile belirtilen öğeye göre bir miktar sola kaydırıyor.
valarray<Type>& operator<<=(const valarray<Type>& right);
valarray<Type>& operator<<=(const Type& right);
Parametreler
right
Sol kaydırma miktarını veya valarray
öğeleri öğeye göre sol kaydırma miktarını gösteren değer.
Dönüş değeri
valarray
Öğeleri kaydırılan bir öğesinde right
belirtilen miktarı bıraktı.
Açıklamalar
İmzalı sayıların işaretleri korunur.
Örnek
// 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*=
Belirtilen valarray
veya öğe türündeki bir değerin öğelerini bir işlenenle valarray
çarpar.
valarray<Type>& operator*=(const valarray<Type>& right);
valarray<Type>& operator*=(const Type& right);
Parametreler
right
valarray
Bir öğe türünün veya değeri, işlecini valarray
çarpmak için işlenenle aynı olan öğe valarray
türü.
Dönüş değeri
valarray
öğeleri işlenenin ve right
öğelerinin öğe açısından çarpımları valarray
olan bir.
Örnek
// 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+
içindeki her öğeye artı uygulayan birli valarray
işleç. Normal aritmetik değerler için bu işlemin hiçbir etkisi yoktur.
valarray<Type> operator+() const;
Dönüş değeri
valarray
Öğeleri işlenen dizisinin birli artı sonucu olan bir.
Örnek
// 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+=
belirtilen valarray
veya öğe türündeki bir değerin öğelerini işlenene valarray
ekler.
valarray<Type>& operator+=(const valarray<Type>& right);
valarray<Type>& operator+=(const Type& right);
Parametreler
right
valarray
bir öğe türünün veya değeri, işlenene eklenecek olan işlenenle valarray
aynı olan öğe valarray
türü.
Dönüş değeri
valarray
Öğeleri işlenenin ve right
öğelerinin valarray
öğe açısından toplamı olan bir.
Örnek
// 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-
içindeki her öğeye aritmetik bir olumsuzlama uygulayan bir valarray
tekli işleç.
valarray<Type> operator-() const;
Dönüş değeri
valarray
Öğeleri işlenenin öğelerinden valarray
aritmetik olarak olumsuzlanmış olan .
Örnek
// 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-=
Belirtilen valarray
veya öğe türündeki bir değerin öğelerini bir işlenenden valarray
çıkarır.
valarray<Type>& operator-=(const valarray<Type>& right);
valarray<Type>& operator-=(const Type& right);
Parametreler
right
valarray
bir öğe türünün veya değeri, işlenenden valarray
çıkarılacak işlenenle valarray
aynı olan öğe türünden çıkarılacaktır.
Dönüş değeri
valarray
öğeleri işlenenin ve right
öğelerinin valarray
öğe açısından farkı olan bir.
Örnek
// 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/=
İşlenen valarray
öğe temelli bir öğeyi, belirtilen valarray
veya öğe türündeki bir değerin öğelerine böler.
valarray<Type>& operator/=(const valarray<Type>& right);
valarray<Type>& operator/=(const Type& right);
Parametreler
right
valarray
bir öğe türünün veya değeri, işlenene bölünecek işlenenle valarray
aynı olan öğe türündedirvalarray
.
Dönüş değeri
valarray
Öğeleri, işlenenin tarafından bölünen right
öğe açısından bölüm valarray
olan bir.
Örnek
// 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=
Değerleri doğrudan veya başka valarray
bir valarray
öğesinin parçası olarak ya da , gslice_array
, mask_array
veya indirect_array
tarafından belirtilen bir slice_array
öğesine öğe atar.
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);
Parametreler
right
işlenenine valarray
kopyalanacak valarray
.
val
İşlenen valarray
öğelerinin atanacağı değer.
slicearray
işlenenine slice_array
kopyalanacak valarray
.
gslicearray
işlenenine gslice_array
kopyalanacak valarray
.
maskarray
işlenenine mask_array
kopyalanacak valarray
.
indarray
işlenenine indirect_array
kopyalanacak valarray
.
Dönüş değeri
İlk üye işleci, denetlenen sırayı tarafından right
denetlenen dizinin bir kopyasıyla değiştirir.
İkinci üye işleci ilk işleçle aynıdır, ancak Rvalue başvuru bildirimcisi ile : &&
.
Üçüncü üye işleci, denetlenen sıranın her öğesini bir val kopyasıyla değiştirir.
Kalan üye işleçleri, bağımsız değişkenleri tarafından seçilen denetlenen sıranın yalnızca tarafından operator[]
oluşturulan öğelerinin yerini alır.
Değiştirme denetimli dizideki bir üyenin değeri, ilk denetlenen dizideki bir üyeye bağlıysa, sonuç tanımlanmamış olur.
Açıklamalar
Denetlenen sıranın uzunluğu değişirse, normalde sonuç tanımsız olur. Ancak bu uygulamada, etki yalnızca denetimli dizideki öğelere yönelik tüm işaretçileri veya başvuruları geçersiz kılmaya yöneliktir.
Örnek
// 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[]
Belirtilen dizinde veya belirtilen alt kümede bir öğeye veya değerine başvuru döndürür.
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;
Parametreler
index
Bir değer atanacak öğenin dizini.
slicearray
slice_array
Seçilecek veya yeni valarray
bir valarray
öğesine döndürülecek bir alt kümeyi belirten bir öğesi.
gslicearray
gslice_array
Seçilecek veya yeni valarray
bir valarray
öğesine döndürülecek bir alt kümeyi belirten bir öğesi.
boolarray
bool_array
Seçilecek veya yeni valarray
bir valarray
öğesine döndürülecek bir alt kümeyi belirten bir öğesi.
indarray
indirect_array
Seçilecek veya yeni valarray
bir valarray
öğesine döndürülecek bir alt kümeyi belirten bir öğesi.
Dönüş değeri
Belirtilen dizinde veya belirtilen alt kümede bir öğeye veya değerine başvuru.
Açıklamalar
Üye işleci, tarafından *this
denetlenen öğeler arasından öğe dizilerini seçmenin çeşitli yollarını sağlamak için aşırı yüklenmiştir. Beş üye işleçlerden oluşan ilk grup, denetlenen sıranın operator=
seçmeli olarak değiştirilmesine (dilimleme) izin vermek için çeşitli aşırı yüklemeleri (ve diğer atama işleçleri) ile birlikte çalışır. Seçili öğeler mevcut olmalıdır.
1 veya 2 olarak tanımlanan kullanılarak _ITERATOR_DEBUG_LEVEL
derlendiğinde, sınırlarının valarray
dışındaki bir öğeye erişmeye çalışırsanız bir çalışma zamanı hatası oluşur. Daha fazla bilgi için bkz . İşaretli yineleyiciler.
Örnek
bildirme ve kullanma operator[]
örnekleri için slice::slice
ve gslice::gslice
örneklerine bakın.
operator^=
Belirtilen valarray
veya öğe türünün değerine sahip bit valarray
düzeyinde özel veya (^
) değerini alır.
valarray<Type>& operator^=(const valarray<Type>& right);
valarray<Type>& operator^=(const Type& right);
Parametreler
right
valarray
Bit tabanlı özel veya (XOR) işleci^
() tarafından işlenen ile birleştirilecek işlenenle valarray
valarray
aynı öğe türünün veya değeri.
Dönüş değeri
valarray
Öğeleri işlenenin bit tabanlı özel veya (XOR) valarray
olan ve right
.
Açıklamalar
XOR olarak adlandırılan ve işleci ^
tarafından belirtilen bit tabanlı özel veya şu semantiği içerir: Verilen bitler b1
ve b2
, b1 ^ b2
öğelerden tam olarak biri 1 ise 1, her iki öğe de 0 veya 1 ise 0'dır.
Örnek
// 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|=
Bir dizideki öğelerin bit düzeyinde OR (|
) değerini, belirtilen valarray
bir içindeki karşılık gelen öğelerle veya öğe türündeki bir değerle alır.
valarray<Type>& operator|=(const valarray<Type>& right);
valarray<Type>& operator|=(const Type& right);
Parametreler
right
valarray
bit düzeyinde OR (|
) tarafından işlenen ile valarray
birleştirilecek işlenenle valarray
aynı öğe türünün veya değeri.
Dönüş değeri
valarray
öğeleri tarafından right
işlenenin valarray
öğe açısından bit tabanlı OR (|
) olan bir.
Açıklamalar
Bit düzeyinde bir işlem yalnızca ve int
gibi char
tam sayı veri türlerindeki bitleri işlemek için kullanılabilir. , , double
, , void
long double
, , bool
veya diğer daha karmaşık veri türlerinde float
çalışmaz.
Bit düzeyinde OR (|
), tek tek bit düzeyindeki veri türüne uygulanır. Verilen bitler b1
ve b2
, b1 | b2
bitlerden en az biri 1 ise 1, her iki bit de 0 ise 0 olur.
Örnek
// 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~
içindeki her öğenin değerlerinin bit düzeyinde tamamlayıcısını alan bir valarray
tekli işleç.
valarray<Type> operator~() const;
Dönüş değeri
işleneninin valarray
öğe değerlerinin bit düzeyinde olmayan tamamlayıcısı olan değerlerin valarray
değeri.
Açıklamalar
Bit düzeyinde bir işlem yalnızca ve int
gibi char
tam sayı türlerindeki bitleri işleyebilir. , , double
, , void
long double
, , bool
veya diğer daha karmaşık veri türlerinde float
çalışmaz.
Bit düzeyinde olmayan tamamlayıcı işleci ~
, tek tek bit düzeyindeki veri türüne uygulanır. Verilen bit b
, ~b
0 ise b
1, 1 ise b
0'dır.
Örnek
// 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
içindeki valarray
öğelerin sayısını belirtilen bir sayıya değiştirir.
void resize(
size_t new_size);
void resize(
size_t new_size,
const Type val);
Parametreler
new_size
Yeniden boyutlandırılan valarray
içindeki öğe sayısı.
val
Yeniden boyutlandırılan valarray
öğesinin öğelerine verilecek değer.
Açıklamalar
İlk üye işlevi, öğeleri varsayılan oluşturucularıyla başlatır.
Denetlenen dizideki öğelere yönelik tüm işaretçiler veya başvurular geçersiz kılındı.
Örnek
Aşağıdaki örnekte üye işlevinin kullanımı gösterilmektedir valarray::resize
.
// 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
Bir içindeki valarray
tüm öğeleri belirtilen sayıda yere kaydırır.
valarray<Type> shift(int count) const;
Parametreler
count
Öğelerin ileri kaydırılacağı yer sayısı.
Dönüş değeri
İşlenen içindeki konumlarıyla valarray
karşılaştırıldığında tüm öğelerin öğesinin valarray
önüne doğru veya sola doğru hareket ettirildiği count
yeni valarray
bir yeni.
Açıklamalar
pozitif değeri count
, öğeleri sıfır dolguyla sola count
kaydırır.
negatif değeri count
, öğeleri sıfır dolguyla doğru count
yerlere kaydırır.
Örnek
// 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
içindeki valarray
öğe sayısını bulur.
size_t size() const;
Dönüş değeri
İşlenen valarray
içindeki öğe sayısı.
Örnek
Aşağıdaki örnekte üye işlevinin kullanımı gösterilmektedir valarray::size
.
// 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
Sıfır olmayan uzunluktaki valarray
tüm öğelerin toplamını belirler.
Type sum() const;
Dönüş değeri
İşlenen öğelerinin valarray
toplamı.
Açıklamalar
Uzunluk birden büyükse, üye işlevi sınıfının Type
öğe çiftleri arasında uygulayarak operator+=
toplama değer ekler. Bu, işlecin türündeki Type
öğeler için sağlanması gerektiği anlamına gelir.
Örnek
// 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
İki valarray
nesnenin öğelerini değiştirir.
void swap(valarray& right);
Parametreler
right
valarray
Değiştirilecek öğeleri sağlayan.
Açıklamalar
Üye işlevi, ve arasında *this
right
denetlenen dizileri değiştirir. Bunu sabit süre içinde yapar, hiçbir özel durum oluşturmaz ve denetlenen iki dizideki öğelere hiçbir başvuru, işaretçi veya yineleyiciyi geçersiz kılmaz.
valarray
Belirli bir valarray
boyutta veya belirli bir değerin öğeleriyle ya da başka bir veya başka valarray
bir alt kümesinin valarray
kopyası olarak oluşturur.
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);
Parametreler
count
içinde valarray
olacak öğelerin sayısı.
val
içindeki öğeleri valarray
başlatırken kullanılacak değer.
ptr
içindeki öğeleri başlatmak için kullanılacak değerlerin işaretçisi valarray
.
right
Yeni valarray
öğesini başlatmak için var olan valarray
bir .
sliceArray
slice_array
Öğe değerleri, oluşturulmakta olan öğelerinin valarray
başlatılmasında kullanılacak olan.
gsliceArray
gslice_array
Öğe değerleri, oluşturulmakta olan öğelerinin valarray
başlatılmasında kullanılacak olan.
maskArray
mask_array
Öğe değerleri, oluşturulmakta olan öğelerinin valarray
başlatılmasında kullanılacak olan.
indArray
indirect_array
Öğe değerleri, oluşturulmakta olan öğelerinin valarray
başlatılmasında kullanılacak olan.
iList
initializer_list
Kopyalanacak öğeleri içeren.
Açıklamalar
İlk (varsayılan) oluşturucu, nesnesini boş valarray
bir olarak başlatır. Sonraki üç oluşturucunun her biri nesnesini aşağıdaki gibi öğelerden birine valarray
count
başlatır:
Açık
valarray(size_t count)
için, her öğe varsayılan oluşturucu ile başlatılır.için
valarray(const Type& val, count)
her öğe ileval
başlatılır.için
valarray(const Type* ptr, count)
konumundakiI
öğesi ileptr[I]
başlatılır.
Kalan her oluşturucu, nesnesini bağımsız değişkende belirtilen alt küme tarafından belirlenen bir valarray<Type>
nesneye başlatır.
Son oluşturucu, bir sonraki son ile aynıdır, ancak Rvalue başvuru bildirimcisi ile: &&
.
Örnek
// 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
içinde depolanan öğenin türünü temsil eden bir valarray
tür.
typedef Type value_type;
Açıklamalar
türü, şablon parametresi Type
için bir eş anlamlıdır.
Örnek
// 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 ).