2017-08-25 63 views
14

vector<int>既有vector<int>::size_type也有vector<int>::difference_type。由于size_type保证能够保持与给定系统上可能包含的元素的最大数目一样大的值,并且在任何有效的使用情况下,difference_type都应该小于或等于元素的最大数量,即顺序容器中两个元素之间的距离永远不会大于顺序容器可包含的最大元素数量。有人可以提供一个例子来说明两者之间的有用区别吗?为什么顺序容器同时具有size_type和difference_type?

+0

对于'size'和'difference'有两种不同的类型被STL的原始设计中的一些误认为是错误的。所以不要太在意。看例如。 https://www.youtube.com/watch?v=wvtFGa6XJDU – alfC

回答

27

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

+0

“减去迭代器”是什么意思?什么时候是一个有意义的操作? – Dai

+1

@Dai为了找到容器中两个元素之间的距离? – Tas

相关问题