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

履歴 編集

function
<span>

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

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

constexpr span<element_type, dynamic_extent>
  last(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() + (size() - N), 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 last<3>(); のように、
  // template限定子の指定が必要になることに注意
  std::span<int, 3> static_span = s.last<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.last(3);
  for (int x : dynamic_span) {
    std::cout << x << std::endl;
  }
}

出力

3
4
5

3
4
5

バージョン

言語

  • C++20

処理系