std::ranges::stride_view<V>::iterator<Const>::operator++,--,+=,-=
From cppreference.com
< cpp | ranges | stride view | iterator
| constexpr /*iterator*/& operator++(); |
(1) | (C++23から) |
| constexpr void operator++( int ); |
(2) | (C++23から) |
| constexpr /*iterator*/ operator++( int ) requires ranges::forward_range<Base>; |
(3) | (C++23から) |
| constexpr /*iterator*/& operator--() requires ranges::bidirectional_range<Base>; |
(4) | (C++23から) |
| constexpr /*iterator*/ operator--( int ) requires ranges::bidirectional_range<Base>; |
(5) | (C++23から) |
| constexpr /*iterator*/& operator+=( difference_type n ) requires ranges::random_access_range<Base>; |
(6) | (C++23から) |
| constexpr /*iterator*/& operator-=( difference_type n ) requires ranges::random_access_range<Base>; |
(7) | (C++23から) |
イテレータをインクリメントまたはデクリメントします。
イテレータのデータメンバーを、 current_、 end_、 stride_、および missing_ とします。
1) 同値:呼び出しの前に、
missing_ = ranges::advance(current_, stride_, end_); return *this
current_ は end_ と等しくない必要があります。2) ++*this;と同等です。
3) auto tmp = *this; ++*this; return tmp; と同等です。
4) 同値:
ranges::advance(current_, missing_ - stride_); missing_ = 0; return *this;
5) auto tmp = *this; --*this; return tmp; と同等です。
6) 同等
if (n > 0) { ranges::advance(current_, stride_ * (n - 1)); missing_ = ranges::advance(current_, stride_, end_); } else if (n < 0) { ranges::advance(current_, stride_ * n + missing_); missing_ = 0; } return *this;
n > 0 の場合、この関数の呼び出しの前に ranges::distance(current_, end_) は stride_ * (n - 1) より大きくなければなりません。
n < 0 の場合、 ranges::distance(current_, end_) は常に(非正の) stride_ * (n - 1) より大きいことに注意してください。7) return *this += -n; と同等です。
目次 |
[編集] パラメータ
| n | - | 現在の位置からの相対位置 |
[編集] 戻り値
1,4,6,7) *this
2) (なし)
3,5) 変更前の *this のコピー
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| (C++23) |
イテレータの算術演算を実行します。 (関数) |