名前空間
変種
操作

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

From cppreference.com
< cpp‎ | ranges‎ | repeat view
 
 
Rangesライブラリ
Rangeアダプタ
 
 
struct /*iterator*/;
(説明用*)

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

目次

[edit] Nested types

公開専用型
定義
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 >>

[edit] Data members

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

[edit] Member functions

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

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

イテレータを構築する。オーバーロード (2)ranges::repeat_viewbegin() および end() によって呼び出される。

1) value_nullptr で初期化し、current_ を値初期化する。
2) value_value で、current_b で初期化する。
Boundstd::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) (C++23から)
constexpr void operator++(int);
(2) (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; と同等。
Boundstd::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; と同等。

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

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

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

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

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

[edit] Non-member functions

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

friend constexpr bool operator==
    ( const /*iterator*/& x, const /*iterator*/& y );
(1) (C++23から)
friend constexpr auto operator<=>
    ( const /*iterator*/& x, const /*iterator*/& y );
(2) (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) (C++23から)
friend constexpr difference_type operator-
    ( const /*iterator*/& x, const /*iterator*/& y );
(2) (C++23から)
1) i -= n; return i; と同等。
2) static_cast<difference_type>(x.current_ ) -
    static_cast<difference_type>(y.current_ )
を返す。

これらの関数は、通常の 非修飾 または 修飾 ルックアップからは見えず、iterator が引数に関連付けられたクラスである場合の 引数依存名探索 によってのみ見つけることができる。

[edit] Notes

iterator は常に random_access_iterator である。

English 日本語 中文(简体) 中文(繁體)