最終更新日時(UTC):
が更新

履歴 編集

function
<span>

std::span::first(C++20)

template <std::size_t Count>
constexpr span<element_type, Count>
   first() const;                             // (1)

constexpr span<element_type, dynamic_extent>
  first(index_type count) const;              // (2)

概要

先頭N個の要素を参照するspanオブジェクトを取得する。

  • (1) : テンプレートパラメータCountで指定された要素数だけ先頭から取り出す
  • (2) : パラメータcountで指定された要素数だけ先頭から取り出す

事前条件

  • (1) : Count <= size()trueであること
  • (2) : count <= size()trueであること

戻り値

(1)であればCountN、(2)であればcountNとして、以下と等価:

return {data(), N};

計算量

定数時間

#include <iostream>
#include <span>
#include <vector>

int main()
{
  std::vector<int> v = {1, 2, 3, 4, 5};

  std::span s{v};

  // (1) : テンプレート引数として要素数を指定して、先頭3要素を取得する。
  // テンプレート内でこのオーバーロードを使用する場合、s.template first<3>(); のように、
  // template限定子の指定が必要になることに注意
  std::span<int, 3> static_span = s.first<3>();
  for (int x : static_span) {
    std::cout << x << std::endl;
  }
  std::cout << std::endl;

  // (2) : 引数として要素数を指定して、先頭3要素を取得する
  std::span<int, std::dynamic_extent> dynamic_span = s.first(3);
  for (int x : dynamic_span) {
    std::cout << x << std::endl;
  }
}

出力

1
2
3

1
2
3

バージョン

言語

  • C++20

処理系