operator+,-(ranges::concat_view::iterator)
ja.cppreference.net より
friend constexpr /*iterator*/
operator+( const /*iterator*/& it, difference_type n )
requires /*concat-is-random-access*/<Const, Views...>;
|
(1) | (C++26 から) |
friend constexpr /*iterator*/
operator+( difference_type n, const /*iterator*/& it )
requires /*concat-is-random-access*/<Const, Views...>;
|
(2) | (C++26 から) |
friend constexpr /*iterator*/
operator-( const /*iterator*/& it, difference_type n )
requires /*concat-is-random-access*/<Const, Views...>;
|
(3) | (C++26 から) |
friend constexpr difference_type
operator-( const /*iterator*/& x, const /*iterator*/& y )
requires /*concat-is-random-access*/<Const, Views...>;
|
(4) | (C++26 から) |
friend constexpr difference_type
operator-( const /*iterator*/& x, std::default_sentinel_t )
requires /* see description */;
|
(5) | (C++26 から) |
friend constexpr difference_type
operator-( std::default_sentinel_t, const /*iterator*/& x )
requires /* see description */;
|
(6) | (C++26 から) |
イテレータをインクリメントまたはデクリメントします。
1)
auto t = it; t += n; return t; と同等。2)
return it + n; と同等。3)
auto t = it; t -= n; return t; と同等。4)
Ix を x.it_ .index() とし、Iy を y.it_ .index() とします:
- もし
Ix > Iyがtrueならば、difference_type result = ranges::distance(y.get-iter<Iy>(), y.get-end<Iy>());for (std::size_t I = Iy + 1; I < Ix; I++)result += ranges::distance(x.get-view<I>());return result + ranges::distance(x.get-begin<Ix>(), x.get-iter<Ix>());と同等。 - そうでなければ、もし
Ix < Iyがtrueならば、return -(y - x);と同等。 - そうでなければ、
return x.get-iter<Ix>() - y.get-iter<Iy>();と同等。
5)
Ix を x.it_ .index() とし、difference_type result = ranges::distance(x.get-iter <Ix>(), x.get-end <Ix>());for (std::size_t I = Ix + 1, count = sizeof...(Views); I < count; I++) result += ranges::distance(x.get-view <I>());return -result; と同等。Fs を Views の最初の要素を除くすべての要素からなるパックとすると、requires 節の式は
(std::sized_sentinel_for<ranges::sentinel_t<maybe-const <Const, Views>>,
ranges::iterator_t<maybe-const <Const, Views>>> && ...) &&
(ranges::sized_range<maybe-const <Const, Fs>> && ...)
x.it_ .valueless_by_exception() が true の場合、動作は未定義。6)
return -(x - std::default_sentinel); と同等。Fs を Views の最初の要素を除くすべての要素からなるパックとすると、requires 節の式は
(std::sized_sentinel_for<ranges::sentinel_t<maybe-const <Const, Views>>,
ranges::iterator_t<maybe-const <Const, Views>>> && ...) &&
(ranges::sized_range<maybe-const <Const, Fs>> && ...)
x.it_ .valueless_by_exception() が true の場合、動作は未定義。これらの関数は通常の非修飾または修飾付き名前探索では可視ではなく、引数依存の名前探索によってのみ、concat_view::iterator <Const>が引数の関連クラスである場合に発見できます。
パラメータ
| it, x, y | - | the iterators |
| n | - | 現在位置からの相対位置 |
戻り値
上記の通り。
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
|
基となるイテレータを進めるまたは戻す
(公開メンバ関数) |