- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
Possible Duplicate:
Why does the C++ standard algorithm “count” return a ptrdiff_t instead of size_t?
标准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);
Effects: Returns the number of iterators i in the range [first,last) for which the following corresponding conditions hold: *i == value, pred(*i) != false.
difference_type
是iterator的difference_type
,可以是负数,但是count
只能返回值>=0。为什么difference_type
而不是 size_t
例如?
最佳答案
理论上,您可能有一个庞大的序列,其元素数量只能用 128 位表示。假设实现支持相应的整数类型,那么 size_t
很可能使用 64 位类型。但是,这个巨大序列的迭代器可以使用 128 位整数。请注意,序列不必在任何单个计算机的内存中表示。它可能被拆分到多个大型数据库中。
您可能还有一台相对较小的计算机,仅支持具有合理性能的 32 位类型。为了完全符合标准,它可能必须支持 64 位类型,但更希望使用平台 native 支持的表示来支持更快的计算。也就是说,size_t
可能不是最佳选择。创建迭代器时,您通常知道需要支持什么大小。
关于c++ - 为什么 std::count(_if) 返回 iterator::difference_type 而不是 size_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12573377/
这个问题在这里已经有了答案: Why does the standard library have find and find_if? (4 个答案) 关闭 7 年前。 为什么一些 STL 算法提供
根据 the documentation of the dplyr package : # The _if() variants apply a predicate function (a funct
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Why does the C++ standard algorithm “count” return a pt
我是一名优秀的程序员,十分优秀!