std::ranges::views:: counted
|
定義於ヘッダー
<ranges>
|
||
|
inline
constexpr
/*unspecified*/
counted
=
/*unspecified*/
;
|
(C++20以降) | |
|
呼び出しシグネチャ
|
||
|
template
<
class
Iterator,
class
DifferenceType
>
requires
/* see below */
|
(C++20以降) | |
カウント済みビューは、何らかのイテレータ
i
と非負整数
n
に対する
カウント済み範囲
[
i
,
n
)
の要素の
view
を提示します。
カウントされた範囲
[
i
,
n
)
は、
i
が指す要素から始まり、
n
回の
++
i
の適用結果が指す要素(存在する場合)を含まない、
n
個の要素を指します。
n
が
n
==
0
の場合、カウント範囲は有効かつ空です。それ以外の場合、カウント範囲が有効であるためには
n
が正の値であり、
i
がデリファレンス可能であり、かつ
[
++
i
,
--
n
)
が有効なカウント範囲である必要があります。
形式的には、
it
と
count
が式であり、
T
が
std::
decay_t
<
decltype
(
(
it
)
)
>
であり、
D
が
std::
iter_difference_t
<
T
>
である場合、
-
Tがinput_or_output_iteratorをモデル化し、かつ decltype ( ( count ) ) が std:: convertible_to < D > をモデル化する場合、-
Tがcontiguous_iteratorをモデル化する場合、 views:: counted ( it, count ) は 式等価 である std:: span ( std:: to_address ( it ) , static_cast < std:: size_t > ( static_cast < D > ( count ) ) ) に、 -
そうでなく、
Tがrandom_access_iteratorをモデル化する場合、 views:: counted ( it, count ) は 式等価 である ranges:: subrange ( it, it + static_cast < D > ( count ) ) に、 - それ以外の場合、 views:: counted ( it, count ) は 式等価 である ranges:: subrange ( std:: counted_iterator ( it, count ) , std:: default_sentinel ) に。
-
- それ以外の場合、 views:: counted ( it, count ) は不適格である。
目次 |
カスタマイゼーションポイントオブジェクト
views::counted
という名前は
カスタマイゼーションポイントオブジェクト
を表します。これは
関数オブジェクト
のconstな
リテラル
semiregular
クラス型です。詳細については
CustomizationPointObject
を参照してください。
注記
views::counted
は、範囲がすべての
count
要素を提供するのに十分な長さがあるかどうかをチェックしません:そのチェックが必要な場合は
views::
take
を使用してください。
例
#include <iostream> #include <ranges> int main() { const int a[]{1, 2, 3, 4, 5, 6, 7}; for (int i : std::views::counted(a, 3)) std::cout << i << ' '; std::cout << '\n'; const auto il = {1, 2, 3, 4, 5}; for (int i : std::views::counted(il.begin() + 1, 3)) std::cout << i << ' '; std::cout << '\n'; }
出力:
1 2 3 2 3 4
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| P2393R1 | C++20 | 整数クラス型から std:: size_t への暗黙変換が無効である可能性がある | 明示的に変更 |
関連項目
|
(C++20)
|
別の
view
の最初のN個の要素からなる
view
(クラステンプレート) (レンジアダプタオブジェクト) |
|
(C++20)
|
イテレータと番兵のペアを
view
に結合する
(クラステンプレート) |
|
(C++20)
|
レンジの終端までの距離を追跡するイテレータアダプタ
(クラステンプレート) |
|
(C++20)
(C++20)
|
特定の条件を満たす要素の数を返す
(アルゴリズム関数オブジェクト) |