为什么std :: count返回有符号整数?

qdi*_*dii 5 c++ containers types c++-standard-library

我真的很惊讶地看到它std::count返回了一个iterator_traits<InputIterator>::difference_type,这反过来指的long int是我的平台上的一个.

这是为什么?容器中的负计数元素没有任何意义.

Som*_*ude 5

它实际上是a std::ptrdiff_t,必须是有符号整数.它必须被签名,因为它可以用作两个迭代器之间的差异,当然可以是负数.

  • 所以接下来的问题是,为什么他们使用`std :: ptrdiff_t`作为std :: count,并在另一篇文章中回答.那谢谢啦. (2认同)