C++ 为什么顺序容器既有大小类型又有差异类型?

C++ 为什么顺序容器既有大小类型又有差异类型?,c++,types,stl,containers,C++,Types,Stl,Containers,vector既有vector::size\u type又有vector::difference\u type。两者似乎都不存在,因为size\u type保证能够保持一个与给定系统上向量可能包含的最大元素数一样大的值,并且在任何有效的用例中,差异类型必须小于或等于元素的最大数量,即序列容器中两个元素之间的距离永远不会大于序列容器可以包含的元素的最大数量。有人能提供一个例子,说明这两者之间有一个有用的区别吗?container::difference\u type存在,因为对于某些序列容器,可以减

vector
既有
vector::size\u type
又有
vector::difference\u type
。两者似乎都不存在,因为
size\u type
保证能够保持一个与给定系统上
向量
可能包含的最大元素数一样大的值,并且在任何有效的用例中,
差异类型
必须小于或等于元素的最大数量,即序列容器中两个元素之间的距离永远不会大于序列容器可以包含的元素的最大数量。有人能提供一个例子,说明这两者之间有一个有用的区别吗?

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

减去迭代器是什么意思?什么时候是有意义的操作?@Dai找到容器中两个元素之间的距离?对于
大小
差异
有两种不同的类型被一些人认为是STL原始设计中的错误。所以不要在上面放太多东西。例如,见。