std::count, std::count_if
提供: cppreference.com
![]() | このページは、Google 翻訳を使って英語版から機械翻訳されました。 翻訳には誤りや奇妙な言い回しがあるかもしれません。文章の上にポインタをおくと、元の文章が見れます。誤りを修正して翻訳を改善する手助けをしてください。翻訳についての説明は、ここをクリックしてください。 |
ヘッダ <algorithm> で定義 | ||
template<class InputIt, class T > typename iterator_traits<InputIt>::difference_type | (1) | |
template<class InputIt, class UnaryPredicate > typename iterator_traits<InputIt>::difference_type | (2) | |
[first, last)
範囲内の、特定の条件を満たす要素数を返す.最初のバージョンはvalue
に等しい要素をカウントし、2番目のバージョンは述語関数p
の戻り値がtrueである要素をカウントする.
目次 |
[編集]パラメータ
first, last | - | 検討する要素の範囲 Original: the range of elements to examine The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
value | - | 検索する値 Original: the value to search for The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
p | - | unary predicate which returns true 必要な要素のために . Original: for the required elements The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. The signature of the predicate function should be equivalent to the following: bool pred(const Type &a); The signature does not need to have const&, but the function must not modify the objects passed to it. |
型の要件 | ||
-InputIt は InputIterator の要件を満たさなければなりません。 |
[編集]値を返します
条件を満たす要素の数.
Original:
number of elements satisfying the condition.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集]複雑性
まさに
last
- first
比較/述語のアプリケーションOriginal:
exactly
last
- first
comparisons / applications of the predicateThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集]可能な実装
First version |
---|
template<class InputIt, class T>typename iterator_traits<InputIt>::difference_type count(InputIt first, InputIt last, const T& value){typename iterator_traits<InputIt>::difference_type ret =0;for(; first != last;++first){if(*first == value){ ret++;}}return ret;} |
Second version |
template<class InputIt, class UnaryPredicate>typename iterator_traits<InputIt>::difference_type count_if(InputIt first, InputIt last, UnaryPredicate p){typename iterator_traits<InputIt>::difference_type ret =0;for(; first != last;++first){if(p(*first)){ ret++;}}return ret;} |
[編集]例
次のコードは、どのように多くの整数
count
では目標値に一致するかを判断するためにstd::vectorを使用しています. Original:
The following code uses
count
to determine how many integers in a std::vector match a target value. The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <algorithm>#include <iostream>#include <vector> int main(){int data[]={1, 2, 3, 4, 4, 3, 7, 8, 9, 10};std::vector<int> v(data, data+10); int target1 =3;int target2 =5;int num_items1 = std::count(v.begin(), v.end(), target1);int num_items2 = std::count(v.begin(), v.end(), target2); std::cout<<"number: "<< target1 <<" count: "<< num_items1 <<'\n';std::cout<<"number: "<< target2 <<" count: "<< num_items2 <<'\n';}
出力:
number: 3 count: 2 number: 5 count: 0
この例では、3で割り切れる要素をカウントするラムダ式を使用しています.
Original:
This example uses a ラムダ式 to count elements divisible by 3.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <algorithm>#include <iostream>#include <vector> int main(){int data[]={1, 2, 3, 4, 4, 3, 7, 8, 9, 10};std::vector<int> v(data, data+10); int num_items1 = std::count_if(v.begin(), v.end(), [](int i){return i %3==0;}); std::cout<<"number divisible by three: "<< num_items1 <<'\n';}
出力:
number divisible by three: 3