constexpr iterator end() const noexcept; // (1)
friend constexpr iterator end(span s) noexcept; // (2)
概要
末尾要素の次を指すイテレータを取得する。
- (1) : メンバ関数として、末尾要素の次を指すイテレータを取得する
- (2) : ADLで探索される関数として、末尾要素の次を指すイテレータを取得する
戻り値
- (1) :
span
オブジェクトが参照している範囲の、末尾要素の次を参照するイテレータを返す - (2) :
return s.end();
例外
投げない
計算量
定数時間
例
#include <iostream>
#include <span>
#include <vector>
#include <algorithm>
int main()
{
std::vector<int> v = {1, 2, 3, 4, 5};
// vの先頭3要素を部分シーケンスとして参照する
std::span<int> s = std::span(v).first(3);
// (1)
std::for_each(s.begin(), s.end(), [](int x) {
std::cout << x << ',';
});
std::cout << std::endl;
// (2) 名前空間修飾なしで、ADLで呼び出す
std::for_each(begin(s), end(s), [](int x) {
std::cout << x << ',';
});
std::cout << std::endl;
// (1)に対する、<iterator>で定義される汎用的なstd::begin()/std::end()の呼び出し
std::for_each(std::begin(s), std::end(s), [](int x) {
std::cout << x << ',';
});
std::cout << std::endl;
// (2) 範囲for文は、ADLでbegin()/end()を探索する
for (int x : s) {
std::cout << x << ',';
}
std::cout << std::endl;
}
出力
1,2,3,
1,2,3,
1,2,3,
1,2,3,
バージョン
言語
- C++20
処理系
- Clang: 9.0
- GCC: ??
- Visual C++: ??