Vio*_*ffe 7 c++ stl standard-library stl-algorithm
刚刚意识到std::count_if 返回一个有符号的值.
为什么这样设计?在我看来,这两者都没有意义(结果只能是一个自然数,即非负整数),因为它不允许做一些简单的事情,比如将这个结果与容器进行比较size()而不会得到警告或使用显式类型转换.
我真的认为返回类型应该有size_type.
我错过了什么吗?
我认为返回类型的目标是兼容std::count需要两个迭代器(想想指针)并返回之间的值(您可以将其视为两个指针的差异)。指针差异(如 中使用的ptrdiff_t)必须是有符号值。
由于兼容性,std::count您可以轻松比较这两个函数的结果。
编辑:这里使用有符号值没有与范围相关的缺点,因为该值至少在范围内,而范围[0, std::count]本身也在范围内[0, end_ptr - start_ptr]。因为end_ptr - start_ptr键入为ptrdiff_t或类似,所以已签名。
| 归档时间: |
|
| 查看次数: |
763 次 |
| 最近记录: |