0
点赞
收藏
分享

微信扫一扫

count 源码剖析


一:用法解析

函数原型:

template <class InputIterator, class T>
  typename iterator_traits<InputIterator>::difference_type
    count (InputIterator first, InputIterator last, const T& val);


功能:

在区间[ first , last )找到与val相等的数,返回其个数。

例子:

// count algorithm example
#include <iostream> // std::cout
#include <algorithm> // std::count
#include <vector> // std::vector

int main () {
// counting elements in array:
int myints[] = {10,20,30,30,20,10,10,20}; // 8 elements
int mycount = std::count (myints, myints+8, 10);
std::cout << "10 appears " << mycount << " times.\n";

// counting elements in container:
std::vector<int> myvector (myints, myints+8);
mycount = std::count (myvector.begin(), myvector.end(), 20);
std::cout << "20 appears " << mycount << " times.\n";

return 0;
}

运行如下:

10 appears 3 times.
20 appears 3 times.


二:源码剖析

// TEMPLATE FUNCTION count
template<class _InIt,
class _Ty> inline
typename iterator_traits<_InIt>::difference_type
_Count_np(_InIt _First, _InIt _Last, const _Ty& _Val)
{ // count elements that match _Val
typename iterator_traits<_InIt>::difference_type _Count = 0;

for (; _First != _Last; ++_First)
if (*_First == _Val)
++_Count;
return (_Count);
}

template<class _InIt,
class _Ty> inline
typename iterator_traits<_InIt>::difference_type
count(_InIt _First, _InIt _Last, const _Ty& _Val)
{ // count elements that match _Val
_DEBUG_RANGE(_First, _Last);
return (_Count_np(_Unchecked(_First), _Unchecked(_Last), _Val));
}





源码摘抄自Visual Studio 2015安装目录algorithm文件中。

点击进入目录----> C++源码剖析目录





举报

相关推荐

0 条评论