GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::count,std::count_if(3) C++ Standard Libary std::count,std::count_if(3)

std::count,std::count_if - std::count,std::count_if


Defined in header <algorithm>
template< class InputIt, class T >
(until
typename iterator_traits<InputIt>::difference_type C++20)


count( InputIt first, InputIt last, const T& value );
template< class InputIt, class T >
(since
constexpr typename iterator_traits<InputIt>::difference_type C++20)


count( InputIt first, InputIt last, const T& value );
template< class ExecutionPolicy, class ForwardIt, class T >


typename iterator_traits<ForwardIt>::difference_type (2) (since
count( ExecutionPolicy&& policy, C++17)


ForwardIt first, ForwardIt last, const T& value );
template< class InputIt, class UnaryPredicate > (1)
(until
typename iterator_traits<InputIt>::difference_type C++20)


count_if( InputIt first, InputIt last, UnaryPredicate p );
template< class InputIt, class UnaryPredicate >
(since
constexpr typename iterator_traits<InputIt>::difference_type C++20)
(3)
count_if( InputIt first, InputIt last, UnaryPredicate p );
template< class ExecutionPolicy, class ForwardIt, class
UnaryPredicate >
(since
typename iterator_traits<ForwardIt>::difference_type (4) C++17)
count_if( ExecutionPolicy&& policy,


ForwardIt first, ForwardIt last, UnaryPredicate p );


Returns the number of elements in the range [first, last) satisfying specific
criteria.


1) counts the elements that are equal to value.
3) counts elements for which predicate p returns true.
2,4) Same as (1,3), but executed according to policy. These overloads do not
participate in overload resolution unless
std::is_execution_policy_v<std::decay_t<ExecutionPolicy>>
(until C++20)
std::is_execution_policy_v<std::remove_cvref_t<ExecutionPolicy>>
(since C++20) is true.


first, last - the range of elements to examine
value - the value to search for
policy - the execution policy to use. See execution policy for details.
unary predicate which returns true for the required elements.


The expression p(v) must be convertible to bool for every argument v
p - of type (possibly const) VT, where VT is the value type of InputIt,
regardless of value category, and must not modify v. Thus, a parameter
type of VT&is not allowed
, nor is VT unless for VT a move is equivalent to a copy
(since C++11).


-
InputIt must meet the requirements of LegacyInputIterator.
-
ForwardIt must meet the requirements of LegacyForwardIterator.


number of elements satisfying the condition.


exactly last - first comparisons / applications of the predicate


The overloads with a template parameter named ExecutionPolicy report errors as
follows:


* If execution of a function invoked as part of the algorithm throws an exception
and ExecutionPolicy is one of the standard policies, std::terminate is called.
For any other ExecutionPolicy, the behavior is implementation-defined.
* If the algorithm fails to allocate memory, std::bad_alloc is thrown.


For the number of elements in the range [first, last) without any additional
criteria, see std::distance.


See also the implementations of count in libstdc++ and libc++.


See also the implementations of count_if in libstdc++ and libc++.


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;
}

// Run this code


#include <algorithm>
#include <iostream>
#include <iterator>
#include <array>


int main()
{
constexpr std::array v = { 1, 2, 3, 4, 4, 3, 7, 8, 9, 10 };
std::cout << "v: ";
std::copy(v.cbegin(), v.cend(), std::ostream_iterator<int>(std::cout, " "));
std::cout << '\n';


// determine how many integers match a target value.
for (const int target: {3, 4, 5}) {
const int num_items = std::count(v.cbegin(), v.cend(), target);
std::cout << "number: " << target << ", count: " << num_items << '\n';
}


// use a lambda expression to count elements divisible by 4.
int count_div4 = std::count_if(v.begin(), v.end(), [](int i){return i % 4 == 0;});
std::cout << "numbers divisible by four: " << count_div4 << '\n';


// A simplified version of `distance` with O(N) complexity:
auto distance = [](auto first, auto last) {
return std::count_if(first, last, [](auto){return true;});
};
static_assert(distance(v.begin(), v.end()) == 10);
}


v: 1 2 3 4 4 3 7 8 9 10
number: 3, count: 2
number: 4, count: 2
number: 5, count: 0
numbers divisible by four: 3


distance returns the distance between two iterators
(function template)
ranges::count
ranges::count_if returns the number of elements satisfying specific criteria
(C++20) (niebloid)
(C++20)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.