描述:
得到容器中满足条件的元素数量。
定义:
template< class InputIt, class T >
typename iterator_traits<InputIt>::difference_type
count( InputIt first, InputIt last, const T &value );
template< class InputIt, class T >
constexpr typename iterator_traits<InputIt>::difference_type
count( InputIt first, InputIt last, const T &value );
template< class InputIt, class UnaryPredicate >
typename iterator_traits<InputIt>::difference_type
count_if( InputIt first, InputIt last, UnaryPredicate p );
template< class InputIt, class UnaryPredicate >
constexpr typename iterator_traits<InputIt>::difference_type
count_if( InputIt first, InputIt last, UnaryPredicate p );
可能的实现:
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;
}
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;
}
参数:
first, last - 要检验的元素范围
value - 要搜索的值
p - 对要求的元素则返回 true 的一元谓词。
返回值:
返回满足条件的元素数。
示例:
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> v{ 1, 2, 3, 4, 4, 3, 7, 8, 9, 10 };
int nCount = std::count(v.begin(), v.end(), 3);
std::cout << "容器中元素为3的元素数量:" << nCount << std::endl;
//容器中元素为3的元素数量:2
}
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> v{ 1, 2, 3, 4, 4, 3, 7, 8, 9, 10 };
// 用 lambda 表达式计量能被 3 整除的元素数量
int nCount = std::count_if(v.begin(), v.end(), [](int i) {return i % 3 == 0; });
std::cout << "容器中能被3整除的元素数量: " << nCount << std::endl;
//容器中能被3整除的元素数量: 3
}