indirect_array man page on OpenIndiana

Man page or keyword search:  
man Server   20441 pages
apropos Keyword Search (all sections)
Output format
OpenIndiana logo
[printable version]

indirect_array(3C++)		       -		  indirect_array(3C++)

Standard C++ Library Copyright 1998, Rogue Wave Software, Inc.

NAME
       indirect_array

	-  A  numeric  array  class used to represent elements selected from a
       valarray.

SYNOPSIS
       #include <valarray>
       template <class T>
       class indirect_array ;

DESCRIPTION
       indirect_array<T> creates a  selective  view  into  a  valarray.	 Indi‐
       rect_arrays are produced by applying the indirect subscript operator to
       a valarray. The indirect array produced by this subscript contains only
       the  elements  of  the  valarray	 whose indices appear as values in the
       argument. The elements in an indirect_array are references to  selected
       elements	 in the valarray (so changing an element in the indirect_array
       really changes the corresponding element in  the	 valarray).  An	 indi‐
       rect_array  does	 not  itself  hold any distinct elements. The template
       cannot be instantiated directly since all its constructors are private.
       However,	 you can copy an indirect_array to a valarray using either the
       valarray copy constructor or the assignment operator. Reference	seman‐
       tics are lost at that point.

INTERFACE
       template <class T> class indirect_array {
       public:

  // types
 typedef T value_type;

  // destructor
  ~indirect_array();

  // public assignment
 void operator= (const valarray<T>& array) const;
  // computed assignment
 void operator*= (const valarray<T>& array) const;
 void operator/= (const valarray<T>& array) const;
 void operator%= (const valarray<T>& array) const;
 void operator+= (const valarray<T>& array) const;
 void operator-= (const valarray<T>& array) const;
 void operator^= (const valarray<T>& array) const;
 void operator&= (const valarray<T>& array) const;
 void operator|= (const valarray<T>& array) const;
 void operator<<= (const valarray<T>& array) const;
 void operator>>= (const valarray<T>& array) const;

  // fill function
 void operator=(const T&);

private:
  // constructors
 indirect_array();
 indirect_array(const indirect_array<T>&);
  // operator =
 indirect_array<T>&
    operator= (const indirect_array<T>& array);
};

CONSTRUCTORS
       indirect_array();
       indirect_array(const indirect_array&);

   All	indirect_array constructors are private and cannot be called directly.
   This prevents copy construction of indirect_arrays.

ASSIGNMENT OPERATORS
       void operator=(const valarray<T>& x) const;

   Assigns values from x to the selected elements of the  valarray  that  self
   refers to. Remember that an indirect_array never holds any elements itself;
   it simply refers to selected elements in the valarray used to generate it.

indirect_array<;T>&
operator=(const indirect-_array<T>& x);

   Private assignment operator. Cannot be  called  directly,  thus  preventing
   assignment between indirect_arrays.

COMPUTED ASSIGNMENT OPERATORS
       void operator*=(const valarray<T>& val) const;
       void operator/=(const valarray<T>& val) const;
       void operator%=(const valarray<T>& val) const;
       void operator+=(const valarray<T>& val) const;
       void operator-=(const valarray<T>& val) const;
       void operator^=(const valarray<T>& val) const;
       void operator&=(const valarray<T>& val) const;
       void operator|=(const valarray<T>& val) const;
       void operator<<=(const valarray<T>& val) const;
       void operator>>=(const valarray<T>& val) const;

   Applies  the	 indicated  operation  using elements from val to the selected
   elements of the valarray that  self	refers	to.  Remember  that  an	 indi‐
   rect_array  never  holds  any elements itself; it simply refers to selected
   elements in the valarray used to generate it.

MEMBER FUNCTIONS
       void operator=(const T& x);

   Assigns x to the selected elements of the valarray that self refers to.

EXAMPLE
       //
       // indirect_array.cpp
       //
       #include "valarray.h" // Contains a valarray stream inserter
       using namespace std;

       int main(void)
       {
 int ibuf[10] = {0,1,2,3,4,5,6,7,8,9};
 size_t sbuf[6] = {0,2,3,4,7,8};

  // create a valarray of ints
 valarray<int>	       vi(ibuf,10);

  // create a valarray of indices for a selector
 valarray<size_t> selector(sbuf,6);

  // print out the valarray<int>
 cout << vi << endl;

  // Get a indirect_array
  // and assign that indirect to another valarray
 indirect_array<int> select = vi[selector];
 valarray<int> vi3 = select;

  // print out the selective array
 cout << vi3 << endl;

  // Double the selected values
 select += vi3;

  // print out vi1 again
 cout << vi << endl;

 return 0;
}

Program Output

[0,1,2,3,4,5,6,7,8,9]
[0,2,3,4,7,8]
[0,1,4,6,8,5,6,14,16,9]

WARNINGS
       If your compiler does not support namespaces, then you do not need  the
       using declaration for std.

SEE ALSO
       slice, slice_array, valarray, gslice, gslice_array, mask_array

Rogue Wave Software		  02 Apr 1998		  indirect_array(3C++)
[top]

List of man pages available for OpenIndiana

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net