名前空間
変種
操作

std::experimental::ranges::iterator_category

From cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
イテレータライブラリ
イテレータのコンセプト
間接呼び出し可能コンセプト
                                                  
                                                  
                                                  
共通アルゴリズム要件
                                                  
Concept utilities
Iterator utilities and operations
Iterator traits
イテレータアダプタ
ストリームイテレータ
 
template< class I >
struct iterator_category {};
(1)
template< class T >
struct iterator_category<T*>;
(2)
template< class T >
struct iterator_category<const T> : iterator_category<T> {};
(3)
template< class T >

    requires requires { typename T::iterator_category; }

struct iterator_category<T>;
(4)

クラスIのイテレータカテゴリを計算します。ユーザーは、プログラム定義型のためにiterator_categoryを特殊化できます。

1) プライマリテンプレートは空の構造体です。
2) ポインタの特殊化。Tがオブジェクト型の場合、ranges::random_access_iterator_tagに等しいメンバ型typeを提供します。それ以外の場合は、メンバtypeはありません。
3) const 修飾された型に対する特殊化。
4) 公開されアクセス可能なメンバ型iterator_categoryを定義する型の特殊化。T::iterator_categoryが名前空間stdのイテレータカテゴリタグのいずれかと同じか、またはそれから派生している場合、以下に説明するように、名前空間rangesの対応するタグにマッピングされます。それ以外の場合は、T::iterator_categoryに等しいメンバ型typeを提供します。
  • T::iterator_categorystd::random_access_iterator_tagと同じか、またはそれから派生している場合、ranges::random_access_iterator_tagに等しいメンバ型typeを提供します。
  • それ以外の場合、T::iterator_categorystd::bidirectional_iterator_tagと同じか、またはそれから派生している場合、ranges::bidirectional_iterator_tagに等しいメンバ型typeを提供します。
  • それ以外の場合、T::iterator_categorystd::forward_iterator_tagと同じか、またはそれから派生している場合、ranges::forward_iterator_tagに等しいメンバ型typeを提供します。
  • それ以外の場合、T::iterator_categorystd::input_iterator_tagと同じか、またはそれから派生している場合、ranges::input_iterator_tagに等しいメンバ型typeを提供します。
  • それ以外の場合、T::iterator_categorystd::output_iterator_tagと同じか、またはそれから派生している場合、メンバtypeはありません。

[編集] ヘルパーエイリアステンプレート

template< class T >
using iterator_category_t = typename ranges::iterator_category<T>::type;
(ranges TS)

[編集]

[編集] 関連項目

イテレータカテゴリを示すために使用される空のクラス型
(クラス) [編集]
イテレータカテゴリを示すために使用される空のクラス型
(class) [編集]
イテレータの関連型を収集する互換性トレイトクラス。
(alias template)[編集]
English 日本語 中文(简体) 中文(繁體)