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

时间:2017-08-25 18:54:32

标签: c++ types stl containers

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

1 个答案:

答案 0 :(得分:30)

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