为什么返回类型是std::count http://en.cppreference.com/w/cpp/algorithm/count the difference_type
迭代器(通常是ptrdiff_t
).
因为计数永远不可能为负数,不是size_t
技术上正确的选择?如果计数超出范围怎么办ptrdiff_t
因为数组理论上可能的大小可以是size_t
?
EDIT:到目前为止,对于函数返回的原因还没有合适的答案ptrdiff_t
。从下面的答案中收集到的一些解释是返回类型是iterator_traits<InputIterator>::difference_type
这是通用的,可以是任何东西。直到那时,它才有意义。存在计数可能超过的情况size_t
。然而,为什么返回类型是这样仍然没有意义typedef ptrdiff_t iterator_traits<InputIterator>::difference_type
对于标准迭代器而不是typedef size_t iterator_traits<InputIterator>::difference_type
.
The std::count()
算法依赖迭代器类型来定义一个足够大的整数类型来表示任何大小的范围。容器的可能实现包括文件和网络流等。不能保证整个范围立即适合进程的地址空间,因此std::size_t
可能太小了。
该标准提供的唯一一体式std::iterator_traits<>
is std::iterator_traits<>::difference_type
,它适合表示两个迭代器之间的“距离”。对于作为指针(包装器)实现的迭代器,此类型是std::ptrdiff_t
。没有size_type
或类似的迭代器特征,所以没有其他选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)