C++ gslice 类

  • 定义和用法

    class gslice;
    std::gslice 表示valarray广义切片选择器(多维切片)。 它不包含也没有引用任何元素-它仅描述要在valarray::operator []中用作索引的元素的选择。valarray广义切片由起始索引,一组大小和一组跨度指定。 它产生切片选择的多维组合,其中:
    • 起始索引(start)是所选内容中第一个元素的索引。
    • 大小(size)是所选内容中的元素数。
    • 跨度(stride)是将所选元素分开的跨度。
    例如,具有以下内容的gslice:
    • start = 1
    • size = {2,3}
    • stride = {7,2}
    会选择:
    
                        [0][1][2][3][4][5][6][7][8][9][10][11][12][13]
    start=1:                *
                            |
    size=2, stride=7:       *--------------------*
                            |                    |
    size=3, stride=2:       *-----*-----*        *------*------*
                            |     |     |        |      |      |
    gslice:                 *     *     *        *      *      *
                        [0][1][2][3][4][5][6][7][8][9][10][11][12][13]
    
  • 成员函数

    成员函数 描述
    (constructor) gslice构造函数(公共成员函数)
    gslice::start 返回gslice的开始(公共成员函数)
    gslice::size gslice的返回大小(公共成员函数)
    gslice::stride gslice的返回步幅(公共成员函数)
  • 示例

    
    // gslice example
    #include <iostream>     // std::cout
    #include <cstddef>      // std::size_t
    #include <valarray>     // std::valarray, std::gslice
    
    int main ()
    {
      std::valarray<int> foo (14);
      for (int i=0; i<14; ++i) foo[i]=i;
    
      std::size_t start=1;
      std::size_t lengths[]= {2,3};
      std::size_t strides[]= {7,2};
    
      std::gslice mygslice (start,
                            std::valarray<std::size_t>(lengths,2),
                            std::valarray<std::size_t>(strides,2));
    
      std::valarray<int> bar = foo[mygslice];
    
      std::cout << "gslice:";
      for (std::size_t n=0; n<bar.size(); n++)
              std::cout << ' ' << bar[n];
      std::cout << '\n';
    
      return 0;
    }
    
    尝试一下
    输出
    
    gslice: 1 3 5 8 10 12
    
  • 相关页面

    slice Valarray切片选择器(类)
    gslice_array Valarray gslice选择(类模板)