stl sample

// 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;
}
1