名前空間
変種
操作

std::experimental::ranges::distance

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

    constexpr /* 不明 */ distance = /* 不明 */;

}
(ranges TS)
(カスタマイズポイントオブジェクト)
呼び出しシグネチャ
template< Iterator I, Sentinel<I> S >
constexpr ranges::difference_type_t<I> distance( I first, S last );
(1)
template< Range R >
constexpr ranges::difference_type_t<ranges::iterator_t<R>> distance( R&& r );
(2)
template< SizedRange R >
constexpr ranges::difference_type_t<ranges::iterator_t<R>> distance( R&& r );
(3)

firstlast の間の距離、または範囲 r の開始から終了までの距離を返します。

1) SizedSentinel<S, I> が満たされている場合、 return last - first; と同等です。そうでない場合、 first から last まで移動するために必要なインクリメントの数を返します。 [firstlast) が範囲を表現しない場合、 IS は同じ型でなければならず、 SizedSentinel をモデル化していなければなりません。また、 [lastfirst) は範囲を表現しなければなりません。それ以外の場合、動作は未定義です。
2) return ranges::distance(ranges::begin(r), ranges::end(r)); と同等です。
3) return ranges::size(r); と同等です。

オーバーロード (2,3) のインスタンス化は、インスタンス化ポイントの前にヘッダー <experimental/ranges/range> がインクルードされていない場合、 ill-formed である可能性があります。

目次

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

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

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

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

[編集] 返り値

firstlast の間の距離、または範囲 r の開始から終了までの距離。

[編集]

[編集] 関連項目

2つのイテレータ間の距離を返す
(関数テンプレート) [編集]
イテレータを指定された距離だけ進める
(function template) [編集]
イテレータをインクリメントする
(function template) [編集]
イテレータをデクリメントする
(function template) [編集]
定数時間で計算可能なサイズを持つ範囲のサイズを取得します。
(customization point object)[編集]
English 日本語 中文(简体) 中文(繁體)