Mega Code Archive

 
Categories / C++ / Valarray
 

Print valarray as two-dimensional array

/* The following code example is taken from the book  * "The C++ Standard Library - A Tutorial and Reference"  * by Nicolai M. Josuttis, Addison-Wesley, 1999  *  * (C) Copyright Nicolai M. Josuttis 1999.  * Permission to copy, use, modify, sell and distribute this software  * is granted provided this copyright notice appears in all copies.  * This software is provided "as is" without express or implied  * warranty, and with no claim as to its suitability for any purpose.  */ #include <iostream> #include <valarray> using namespace std; // print valarray as two-dimensional array template<class T> void printValarray (const valarray<T>& va, int num) {     for (int i=0; i<va.size()/num; i++) {         for (int j=0; j<num; j++) {             cout << va[i*num+j] << ' ';         }         cout << endl;     }     cout << endl; } int main() {     // create valarray for 12 elements     valarray<double> va(12);     // initialize valarray by values 1.01, 2.02, ... 12.12     for (int i=0; i<12; i++) {         va[i] = (i+1) * 1.01;     }     printValarray(va,4);     /* create array of indexes      * - note: element type has to be size_t      */     valarray<size_t> idx(4);     idx[0] = 8;     idx[1] = 0;     idx[2] = 3;     idx[3] = 7;     // use array of indexes to print the ninth, first, fourth, and eighth elements     printValarray(valarray<double>(va[idx]), 4);     // change the first and fourth elements and print them again indirectly     va[0] = 11.11;     va[3] = 44.44;     printValarray(valarray<double>(va[idx]), 4);     // now select the second, third, sixth, and ninth elements     // and assign 99 to them     idx[0] = 1;     idx[1] = 2;     idx[2] = 5;     idx[3] = 8;     va[idx] = 99;     // print the whole valarray again     printValarray (va, 4); } /*  1.01 2.02 3.03 4.04 5.05 6.06 7.07 8.08 9.09 10.1 11.11 12.12 9.09 1.01 4.04 8.08 9.09 11.11 44.44 8.08 11.11 99 99 44.44 5.05 99 7.07 8.08 99 10.1 11.11 12.12  */