// valarrayの使用例
#include < iostream>
#include < valarray>
#include < cmath>
using namespace std;
int main()
{
valarray< int> v(10);
int i;
for(i=0; i<10; i++) v[i] = i;
cout << "Original contents: ";
for(i=0; i<10; i++)
cout << v[i] << " ";
cout << endl;
v = v.cshift(3);
cout << "Shifted contents: ";
for(i=0; i<10; i++)
cout << v[i] << " ";
cout << endl;
valarray< bool> vb = v < 5;
cout << "Those elements less than 5: ";
for(i=0; i<10; i++)
cout << vb[i] << " ";
cout << endl << endl;
valarray< double> fv(5);
for(i=0; i<5; i++) fv[i] = (double) i;
cout << "Original contents: ";
for(i=0; i<5; i++)
cout << fv[i] << " ";
cout << endl;
fv = sqrt(fv);
cout << "Square roots: ";
for(i=0; i<5; i++)
cout << fv[i] << " ";
cout << endl;
fv = fv + fv;
cout << "Double the square roots: ";
for(i=0; i<5; i++)
cout << fv[i] << " ";
cout << endl;
fv = fv - 10.0;
cout << "After subtracting 10 from each element:\n";
for(i=0; i<5; i++)
cout << fv[i] << " ";
cout << endl;
return 0;
}
// sliceの使用例
#include < iostream>
#include < valarray>
using namespace std;
int main()
{
valarray< int> v(10), result;
int i;
for(i=0; i<10; i++) v[i] = i;
cout << "Contents of v: ";
for(i=0; i<10; i++)
cout << v[i] << " ";
cout << endl;
result = v[slice(0,5,2)];
cout << "Contents of result: ";
for(i=0; i< result.size(); i++)
cout << result[i] << " ";
return 0;
}
// gslice()の使用例
#include < iostream>
#include < valarray>
using namespace std;
int main()
{
valarray< int> v(16), result;
valarray< size_t> len(2), interval(2);
int i;
for(i=0; i<16; i++) v[i] = i;
len[0] = 3; len[1] = 3;
interval[0] = 4; interval[1] = 1;
cout << "Contents of v: ";
for(i=0; i<16; i++)
cout << v[i] << " ";
cout << endl;
result = v[gslice(0,len,interval)];
cout << "Contents of result: ";
for(i=0; i< result.size(); i++)
cout << result[i] << " ";
return 0;
}