std::ranges::chunk_by_view<V,Pred>::find_next, std::ranges::chunk_by_view<V,Pred>::find_prev
From cppreference.com
< cpp | ranges | chunk by view
目次 |
std::ranges::chunk_by_view::next
| constexpr ranges::iterator_t<V> /*find-next*/( ranges::iterator_t<V> current ); |
(C++23から) (説明用*) |
|
次のチャンクを見つけます。
Appropriate underlying data-members of chunk_by_view として、base_ と pred_ を考えます。
以下と等価です。
return ranges::next ( ranges::adjacent_find ( current, ranges::end(base_), std::not_fn(std::ref(*pred_)) ), 1, ranges::end(base_) );
この関数が呼び出される前に pred_.has_value() が false である場合、動作は未定義です。
以下の非静的メンバ関数で使用されます
- ranges::chunk_by_view::iterator::
operator++
パラメータ
| current | - | アダプトされたビューにおける現在の要素へのイテレータ |
戻り値
上記のように、次のチャンクへのイテレータ。
std::ranges::chunk_by_view::prev
| constexpr ranges::iterator_t<V> /*find-prev*/( ranges::iterator_t<V> current ) |
(C++23から) (説明用*) |
|
前のチャンクを見つけます。
Appropriate underlying data-members of chunk_by_view として、base_ と pred_ を考えます。
次のようなイテレータ i を返します。範囲は [ranges::begin(base_), current) です。
- ranges::adjacent_find(i, current, std::not_fn(std::ref(*pred_))) が current に等しい。
- そして、もし
iが ranges::begin(base_) に等しくない場合、bool(std::invoke(*pred_, *ranges::prev(i), *i)) は false です。
この関数が呼び出される前に current == ranges::begin(base_) であるか、または pred_.has_value() != true である場合、動作は未定義です。
以下の非静的メンバ関数で使用されます
- ranges::chunk_by_view::iterator::
operator--
パラメータ
| current | - | アダプトされたビューにおける現在の要素へのイテレータ |
戻り値
上記のように、前のチャンクへのイテレータ。