<分区>
我发现了一种我想更好地理解的行为。
我有一个 std::list<int> l;
具有 N 个元素,其中 N>0(非空)。
然后我比较了 std::distance
在 l.begin()
之间和 std::prev(l.end())
.我期待这等于 l.size()
因为l.end()
是一个不存在的迭代器,因此不应计入距离。
以代码形式,为什么:
l.size() != std::distance(l.begin(), std::prev(l.end())
编辑为什么这不是重复
这个问题与this question on intervals无关因为我的问题是关于 distance
的性质迭代器的性质与 l.begin()
无关和 l.end()
间隔,虽然有用和相关的概念。我明确表示我使用了 prev(l.begin())
并说明原因。
鉴于问题中的评论,我理解了我的概念错误,我打算发帖并回答说不能保证 distance()
会给你size()
,因为 distance
count 从第一个到最后一个通过迭代器所需的增量数,而不是给定间隔中的元素数。鉴于该问题已被重复数据删除器阻止,我无法回答我认为正确的答案并添加示例。