template <std::size_t Count>
constexpr span<element_type, Count>
last() const; // (1)
constexpr span<element_type, dynamic_extent>
last(size_type count) const; // (2)
概要
末尾N個の要素を参照するspan
オブジェクトを取得する。
- (1) : テンプレートパラメータ
Count
で指定された要素数だけ末尾から取り出す - (2) : パラメータ
count
で指定された要素数だけ末尾から取り出す
適格要件
- (1) :
Count <= Extent
がtrue
であること
事前条件
戻り値
(1)であればCount
をN
、(2)であればcount
を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
処理系
- Clang: 9.0 ✅
- GCC: ??
- Visual C++: ??