Namespaces
Variants

std::ranges:: repeat_view<W, Bound>:: iterator

From cppreference.net
Ranges library
Range adaptors
struct /*iterator*/ ;
( 説明専用* )

ranges:: repeat_view < W, Bound > :: iterator は、 begin() および end() によって返されるイテレータの型です。 ranges:: repeat_view < W, Bound > の。

目次

ネストされた型

説明専用型
定義
index-type std:: conditional_t < std:: same_as < Bound, std:: unreachable_sentinel_t > ,
std:: ptrdiff_t , Bound >
( 説明専用メンバ型* )
イテレータプロパティ型
定義
iterator_concept std::random_access_iterator_tag
iterator_category std::random_access_iterator_tag
value_type W
difference_type std:: conditional_t < is-signed-integer-like  < index-type  > ,
index-type  , iota-diff-t  < index-type  >>

データメンバ

メンバー 定義
const W * value_ 繰り返す値へのポインタ
( 説明専用メンバーオブジェクト* )
index-type current_ 現在位置
( 説明専用メンバーオブジェクト* )

メンバー関数

std::ranges::repeat_view:: iterator :: iterator

/*iterator*/ ( ) = default ;
(1) (since C++23)
constexpr explicit /*iterator*/
( const W * value, /*index-type*/ b = /*index-type*/ ( ) ) ;
(2) (since C++23)
( 説明専用* )

イテレータを構築します。オーバーロード (2) begin() および end() によって ranges::repeat_view から呼び出されます。

1) value_ nullptr で初期化し、 current_ を値初期化します。
2) value_ value で、 current_ b で初期化します。
Bound std::unreachable_sentinel_t でなく、かつ b が負の場合、動作は未定義です。

std::ranges::repeat_view:: iterator :: operator*

constexpr const W & operator * ( ) const noexcept ;
(C++23以降)

value_ を返します。

std::ranges::repeat_view:: iterator :: operator[]

constexpr const W & operator [ ] ( difference_type n ) const noexcept ;
(C++23以降)

* ( * this + n ) を返します。

std::ranges::repeat_view:: iterator :: operator++

constexpr /*iterator*/ & operator ++ ( ) ;
(1) (since C++23)
constexpr void operator ++ ( int ) ;
(2) (since C++23)
1) current_ に対して ++ を実行し、 return * this ; するのと等価。
2) auto tmp = * this ; ++* this ; return tmp ; と等価。

std::ranges::repeat_view:: iterator :: operator--

constexpr /*iterator*/ & operator -- ( ) ;
(1) (C++23以降)
constexpr /*iterator*/ operator -- ( int ) ;
(2) (C++23以降)
1) 以下と等価: -- current_  ; return * this ; .
Bound std::unreachable_sentinel_t でなく、かつ current_ が非正の場合、動作は未定義です。
2) 以下と等価: auto tmp = * this ; --* this ; return tmp ; .

std::ranges::repeat_view:: iterator :: operator+=

constexpr /*iterator*/ & operator + = ( difference_type n ) ;
(C++23以降)

current_ + = n ; return * this ; と等価。

Bound std::unreachable_sentinel_t でなく、かつ current_ + n が負の場合、動作は未定義。

std::ranges::repeat_view:: iterator :: operator-=

constexpr /*iterator*/ & operator - = ( difference_type n ) ;
(C++23以降)

current_ - = n ; return * this ; と等価。

Bound std::unreachable_sentinel_t でなく、かつ current_ - n が負の場合、動作は未定義。

非メンバー関数

operator==, <=> (std::ranges::repeat_view:: iterator )

friend constexpr bool operator ==
( const /*iterator*/ & x, const /*iterator*/ & y ) ;
(1) (since C++23)
friend constexpr auto operator <=>
( const /*iterator*/ & x, const /*iterator*/ & y ) ;
(2) (since C++23)
1) x. current_ == y. current_ を返します。
2) x. current_ <=> y. current_ を返します。

!= 演算子は operator== から 合成されます

これらの関数は通常の 非修飾名探索 または 修飾名探索 では可視化されず、 iterator が引数の関連クラスである場合にのみ 実引数依存探索 によって発見されます。

operator+ (std::ranges::repeat_view:: iterator )

friend constexpr /*iterator*/ operator +
( /*iterator*/ i, difference_type n ) ;
(1) (C++23以降)
friend constexpr /*iterator*/ operator +
( difference_type n, /*iterator*/ i ) ;
(2) (C++23以降)

i + = n ; return i ; と等価。

これらの関数は通常の 非修飾名探索 または 修飾名探索 では可視化されず、 iterator が引数の関連クラスである場合にのみ 実引数依存の名前探索 によって発見されます。

operator- (std::ranges::repeat_view:: iterator )

friend constexpr /*iterator*/ operator -
( /*iterator*/ i, difference_type n ) ;
(1) (since C++23)
friend constexpr difference_type operator -
( const /*iterator*/ & x, const /*iterator*/ & y ) ;
(2) (since C++23)
1) i -= n; return i; と等価。
2) static_cast<difference_type>(x.current_) - static_cast<difference_type>(y.current_) を返す。

これらの関数は通常の 非修飾名探索 または 修飾名探索 では可視化されず、 実引数依存の名前探索 によってのみ、 iterator が引数の関連クラスである場合に見つけることができる。

注記

iterator は常に random_access_iterator です。