std::experimental::ranges:: count, std::experimental::ranges:: count_if
|
template
<
InputIterator I, Sentinel
<
I
>
S,
class
T,
class
Proj
=
ranges::
identity
>
requires IndirectRelation
<
ranges::
equal_to
<>
,
projected
<
I, Proj
>
,
const
T
*
>
|
(1) | (ranges TS) |
|
template
<
InputRange R,
class
T,
class
Proj
=
ranges::
identity
>
requires IndirectRelation
<
ranges::
equal_to
<>
,
|
(2) | (ranges TS) |
|
template
<
InputIterator I, Sentinel
<
I
>
S,
class
Proj
=
ranges::
identity
,
IndirectUnaryPredicate
<
projected
<
I, Proj
>>
Pred
>
|
(3) | (ranges TS) |
|
template
<
InputRange R,
class
Proj
=
ranges::
identity
,
IndirectUnaryPredicate
<
projected
<
ranges::
iterator_t
<
R
>
, Proj
>>
Pred
>
|
(4) | (ranges TS) |
範囲
[
first
,
last
)
内の特定の条件を満たす要素の数を返します。
上記に示された宣言にかかわらず、アルゴリズム宣言の実際のテンプレートパラメータの数と順序は未規定です。したがって、アルゴリズムを呼び出す際に明示的なテンプレート引数を使用する場合、プログラムはおそらく移植性がありません。
目次 |
パラメータ
| first, last | - | 検査対象の要素範囲 |
| r | - | 検査対象の要素範囲 |
| value | - | 検索する値 |
| pred | - | 投影された要素に適用する述語 |
| proj | - | 要素に適用する投影 |
戻り値
条件を満たす要素の数。
計算量
正確に last - first 回の述語の比較/適用、および同数の射影の適用が行われます。
注記
範囲内の要素数について、
[
first
,
last
)
の追加条件なしの場合、
ranges::distance
を参照してください。
実装例
| 第一バージョン |
|---|
template<InputIterator I, Sentinel<I> S, class T, class Proj = ranges::identity> requires IndirectRelation<ranges::equal_to<>, projected<I, Proj>, const T*> ranges::difference_type_t<I> count(I first, S last, const T& value, Proj proj = Proj{}) { ranges::difference_type_t<I> ret = 0; for (; first != last; ++first) if (ranges::invoke(proj, *first) == value) ++ret; return ret; } |
| 第二バージョン |
template<InputIterator I, Sentinel<I> S, class Proj = ranges::identity, IndirectUnaryPredicate<projected<I, Proj>> Pred> ranges::difference_type_t<I> count_if(I first, S last, Pred pred, Proj proj = Proj{}) { ranges::difference_type_t<I> ret = 0; for (; first != last; ++first) if (ranges::invoke(pred, ranges::invoke(proj, *i))) ++ret; return ret; } |
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
|
特定の条件を満たす要素の数を返す
(関数テンプレート) |
|
|
イテレータとセンチネル間、または範囲の先頭と終端間の距離を返す
(関数テンプレート) |