为什么顺序容器同时具有size_type和difference_type?

Ted*_*ddy 16 c++ containers types stl

vector<int>有两个vector<int>::size_typevector<int>::difference_type.两者似乎都不必存在,因为size_type保证能够保存与vector<int>给定系统上可能包含的最大元素数一样大的值,并且在任何有效用例中,difference_type都必须小于或等于元素的最大数量,即顺序容器中两个元素之间的距离绝不会大于顺序容器可以包含的最大元素数.有人能提供一个例子,两者之间有什么区别吗?

Nat*_*ica 30

container::difference_type存在是因为对于某些序列容器,您可以减去迭代器.减法可能导致负数.您不能使用container::size_type该结果,因为它是无符号的,因此您永远不会有负值.所以我们有container::difference_type一个有符号整数,它是difference_type容器的迭代器.

  • @Dai要查找容器中两个元素之间的距离? (2认同)