最終更新日時:
が更新

履歴 編集

function
<valarray>

std::gslice::コンストラクタ

gslice();                         // (1)

gslice(size_t start,
       valarray<size_t> lengths,
       valarray<size_t> strides); // (2)

gslice(const slice&);             // (3)

gsliceオブジェクトの構築

gsliceオブジェクトを次に示す通りの要素で初期化する。

  • (1) :
    • C++03 : 未規定
    • C++11 : gslice( 0, valarray<size_t>(), valarray<size_t>() )と等価。
  • (2) : 初期位置startから要素数群lengthsと間隔数群stridesでスライスするgsliceオブジェクトを構築する。
    • lengthsstridesはインデックス0番目から順に読み出され、strides[0]個おきにlengths[0]個を選び、そのそれぞれの位置からさらにstrides[1]個おきにlengths[1]個を選び…とスライスされる。
  • (3) : コピーコンストラクタ。コピー元のgsliceオブジェクトと同じ初期位置、要素数群、間隔数群でスライスするgsliceオブジェクトを構築する。

パラメータ

  • start
    • スライスする初期位置。
  • lengths
    • スライスする要素数群。
  • strides
    • スライスする間隔数群。

#include <valarray>
#include <iostream>
#include <sstream>

auto main()
  -> int
{

  std::gslice gs0;

  constexpr auto             start   = 3;
  std::valarray<std::size_t> lengths = {  3, 4 };
  std::valarray<std::size_t> strides = { 10, 3 };

  std::gslice gs1( start, lengths, strides );

  std::gslice gs2( gs1 );

  auto to_string = []( const std::valarray<std::size_t> a )
    {
      std::stringstream r;
      for ( auto v : a )
        r << v << " ";
      return r.str();
    }
    ;

  auto print = [ &to_string ]( const std::gslice& gs )
    {
      std::cout
        << "[" << &gs << "]:" "\n"
           "start : " << gs.start()               << "\n"
           "size  : " << to_string( gs.size()   ) << "\n"
           "stride: " << to_string( gs.stride() ) << "\n"
        ;
    }
    ;

  print( gs0 );
  print( gs1 );
  print( gs2 );
}

出力

[0x7fff4fe25758]:
start : 0
size  : 
stride: 
[0x7fff4fe256d8]:
start : 3
size  : 3 4 
stride: 10 3 
[0x7fff4fe256d0]:
start : 3
size  : 3 4 
stride: 10 3 

参照