mask_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]

mask_array(3C++)		       -		      mask_array(3C++)

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

NAME
       mask_array

	- A numeric array class that gives a masked view of a valarray.

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

DESCRIPTION
       mask_array<T> gives a masked view into a valarray. mask_arrays are only
       produced by applying the mask subscript operator to  a  valarray.  This
       subscript  operator  takes  a  valarray<bool>  argument	and produces a
       mask_array. Only the elements in the valarray whose corresponding  ele‐
       ments  in  the  valarray<bool>  argument	 were true are selected by the
       mask_array. The elements in a mask_array	 are  references  to  selected
       elements	 in  the  valarray  (so	 changing an element in the mask_array
       really changes the corresponding element in the valarray). A mask_array
       does  not  itself  hold	any  distinct elements. The template cannot be
       instantiated directly since all its constructors are private.  However,
       you can copy a slice_array to a valarray using either the valarray copy
       constructor or the assignment operator. Reference semantics are lost at
       that point.

INTERFACE
       template <class T> class mask_array {
       public:

  // types
 typedef T value_type;

  // destructor
  ~mask_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;

  // other
 void operator= (const T&) const;

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

CONSTRUCTORS
       mask_array();
       mask_array(const mask_array&);

   All mask_array constructors are private and cannot be called directly. This
   prevents copy construction of mask_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 a mask_array never holds any elements itself, it
   simply refers to selected elements in the valarray used to generate it.

mask_array<;T>&
operator=(const mask-_array<T>& x);

   Private assignment operator. Cannot be  called  directly,  thus  preventing
   assignment between mask_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	 a  mask_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) const;

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

EXAMPLE
       //
       // mask_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};
 bool mbuf[10] = {1,0,1,1,1,0,0,1,1,0};

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

  // create a valarray of bools for a mask
 valarray<bool> mask(mbuf,10);

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

  // Get a mask array and assign that mask to another array
 mask_array<int> msk = vi[mask];
 valarray<int> vi3 = msk;

  // print out the masked_array
 cout << vi3 << endl;

  // Double the masked values
 msk += 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, indirect_array

Rogue Wave Software		  02 Apr 1998		      mask_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