名前空間
変種
操作

std::experimental::ranges::next

From cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
イテレータライブラリ
イテレータのコンセプト
間接呼び出し可能コンセプト
                                                  
                                                  
                                                  
共通アルゴリズム要件
                                                  
Concept utilities
Iterator utilities and operations
next
Iterator traits
イテレータアダプタ
ストリームイテレータ
 
namespace {

    constexpr /* 未指定 */ next = /* 未指定 */;

}
(ranges TS)
(カスタマイズポイントオブジェクト)
呼び出しシグネチャ
template< Iterator I >
constexpr I next( I i );
(1)
template< Iterator I >
constexpr I next( I i, ranges::difference_type_t<I> n );
(2)
template< Iterator I, Sentinel<I> S >
constexpr I next( I i, S bound );
(3)
template< Iterator I, Sentinel<I> S >
constexpr I next( I i, ranges::difference_type_t<I> n, S bound );
(4)

イテレータ in 回進めるか、または bound に到達するまで進めます(どちらか早い方)。進められたイテレータを返します。

1) ++i; return i; に相当します。
2) ranges::advance(i, n); return i; に相当します。
3) ranges::advance(i, bound); return i; に相当します。
4) ranges::advance(i, n, bound); return i; に相当します。

目次

[編集] カスタマイズポイントオブジェクト

ranges::next という名前は、*カスタマイズポイントオブジェクト*を指します。これは、関数オブジェクトであり、リテラルSemiregular クラス型(説明のため NextT と表記)です。NextT のすべてのインスタンスは等価です。したがって、ranges::next は自由にコピーでき、そのコピーは相互に交換可能に使用できます。

型のセット Args... が与えられた場合、std::declval<Args>()... が上記の ranges::next の引数要件を満たす場合、NextTranges::Invocable<const NextT, Args...> を満たします。それ以外の場合、NextT の関数呼び出し演算子はオーバーロード解決に参加しません。

ranges::next が定義されているすべての翻訳単位において、カスタマイズポイントオブジェクトの同じインスタンスを参照します。(これは、インライン関数や関数テンプレートのようなもので、*one-definition rule* に違反することなく自由に利用できることを意味します。)

[編集] 返り値

進められたイテレータ。

[編集] 注意

オーバーロード (2)n を省略すると n が 1 であるかのように動作しますが、オーバーロード (4)n を省略すると、実際には n が無限大(常に bound まで進む)であるかのように動作します。

[編集]

[編集] 関連項目

(C++11)
イテレータをインクリメントする
(関数テンプレート) [編集]
イテレータを指定された距離だけ進める
(function template) [編集]
イテレータをデクリメントする
(function template) [編集]
イテレータとセンチネルの間の距離、または範囲の開始と終了の間の距離を返します。
(function template) [編集]
English 日本語 中文(简体) 中文(繁體)