For*_*veR 14 c++ library-design stl-algorithm c++11
标准C++中有算法std::count/ std::count_if.
template<class InputIterator, class T>
typename iterator_traits<InputIterator>::difference_type
count(InputIterator first, InputIterator last, const T& value);
template<class InputIterator, class Predicate>
typename iterator_traits<InputIterator>::difference_type
count_if(InputIterator first, InputIterator last, Predicate pred);
Run Code Online (Sandbox Code Playgroud)
效果:返回以下相应条件所适用的[first,last]范围内的迭代器数量:*i == value,pred(*i)!= false.
difference_type是iterator's difference_type,可以是负数,但count只能返回值> = 0.为什么difference_type而不是size_t例如?
Die*_*ühl 12
理论上,您可能有一个巨大的序列,其元素数量只能用128位表示.假设实现支持相应的整数类型,很可能size_t使用64位类型.但是,这个巨大序列的迭代器可以使用128位整数.注意,序列不必在任何单个计算机的存储器中表示.它可能分散在多个庞大的数据库中.
您可能还有一台相对较小的计算机,仅支持具有合理性能的32位类型.对于完全标准的一致性,它可能必须支持64位类型,但是可能希望使用平台本机支持的表示来支持更快的计算.也就是说,size_t可能不是最佳选择.在创建迭代器时,您通常知道需要支持的大小.
| 归档时间: |
|
| 查看次数: |
2073 次 |
| 最近记录: |