The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

gslice (3)
  • >> gslice (3) ( Solaris man: Библиотечные вызовы )
  • 
                           Standard C++ Library
                 Copyright 1998, Rogue Wave Software, Inc.
    
    
    NAME
         gslice
    
          - A numeric array class used  to  represent  a  generalized
         slice from an array.
    
    
    
    SYNOPSIS
         #include <valarray>
         class gslice ;
    
    
    
    DESCRIPTION
         gslice_represents a generalized slice from an array. A  gen-
         eralized  slice  contains a starting index, a set of lengths
         and a set of strides. The number of lengths and strides must
         be  equal.  Together  the  lengths and strides allow a slice
         from a multiple dimension array (with the dimension equal to
         the  number  of  strides)  to be represented on a one dimen-
         sional valarray. The gslice maps a set of  n  indices  (ij),
         where n is equal to the number of strides, to a single index
         k.
    
         When applied to a valarray using the gslice subscript opera-
         tor  (see  valarray)  a  gslice produces a gslice_array. The
         gslice_array class creates a view into the original valarray
         that is tailored to match parameters of the gslice. The ele-
         ments in a gslice_array are references to  the  elements  in
         the original array.
    
    
    
    INTERFACE
         class gslice {
         public:
           // constructors
          gslice();
          gslice(size_t, const valarray<size_t>&,
                 const valarray<size_t>&);
          gslice (const gslice&);
    
           // Accessors
          size_t start() const;
          valarray<size_t> size() const;
          valarray<size_t> stride() const;
         };
    
    
    
    CONSTRUCTORS
         gslice();
    
    
            Default constructor creates a gslice specifying  no  ele-
            ments.
    
    
    
         gslice(size_t start, const valarray<size_t>& length,
               const valarray<size_t>& stride);
    
    
            Creates a slice with starting index, length and stride as
            indicated by the arguments.
    
    
    
         gslice(const gslice&)
    
    
            Creates a slice with starting index, length and stride as
            indicated by the slice argument.
    
    
    
    ACCESSORS
         size_t start();
    
    
            Returns the starting index of the gslice.
    
    
    
         valarraysize_t> size();
    
    
            Returns a valarray<size_t> containing the lengths of  the
            gslice.
    
    
    
         Valarray<size_t> stride();
            Returns a valarray<size_t> containing the strides of  the
            gslice.
    
    
    
    EXAMPLE
         //
         // gslice.cpp
         //
         #include "valarray.h" // Contains a valarray stream inserter
         using namespace std;
    
         int main(void)
         {
          int ibuf[27] =
            {0,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9,10};
          size_t len_buf[3] = {3,3,3};
          size_t stride_buf[3] = {9,3,1};
    
           // create a valarray of ints
          valarray<int>  vi(ibuf,27);
    
           // create length and stride valarrays
          valarray<size_t> len(len_buf,3);
          valarray<size_t> stride(stride_buf,3);
    
           // print out the valarray
          cout << vi << endl;
    
           // Print out all three dimensions (the entire valarray)
          cout << valarray<int>(vi[gslice(0,len,stride)]) << endl;
    
           // Print a two dimensional slice out of the middle
          valarray<size_t> len2(2);
          len2[0] = 3;
          len2[1] = 3;
          valarray<size_t> stride2(2);
          stride2[0] = 3;
          stride2[1] = 1;
          cout << valarray<int>(vi[gslice(9,len2,stride2)]) << endl;
    
           // Print another two dimensional slice out of the middle
           // but orthogonal to one we just did
          stride2[0] = 9;
          stride2[1] = 1;
          cout << valarray<int>(vi[gslice(3,len2,stride2)]) << endl;
    
           // Print out the last plane in the middle,
           // (orthogonal to both of the previous ones)
          stride2[0] = 3;
          stride2[1] = 9;
          cout << valarray<int>(vi[gslice(1,len2,stride2)]) << endl;
    
           // Now how about a diagonal slice?
           // upper left front to lower right back
          stride2[0] = 3;
          stride2[1] = 10;
          cout << valarray<int>(vi[gslice(0,len2,stride2)]) << endl;
    
          return 0;
         }
    
         Program Output
    
    
    
         [0,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9,10]
         [0,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9,10]
         [1,2,3,4,5,6,7,8,9]
         [3,4,5,4,5,6,5,6,7]
         [1,2,3,4,5,6,7,8,9]
         [0,2,4,3,5,7,6,8,10]
    
    
    
    WARNINGS
         If your compiler does not support namespaces,  then  you  do
         not need the using declaration for std.
    
    
    
    SEE ALSO
         valarray,  slice_array,  slice,  gslice_array,   mask_array,
         indirect_array
    
    
    
    


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру