gpt4 book ai didi

c++ - 在 std::list 中,std::distance(it.begin(), std::prev(it.end())) 是否等于 list.size()?

转载 作者:行者123 更新时间:2023-11-28 04:19:35 25 4
gpt4 key购买 nike

<分区>

我发现了一种我想更好地理解的行为。

我有一个 std::list<int> l;具有 N 个元素,其中 N>0(非空)。

然后我比较了 std::distancel.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 从第一个到最后一个通过迭代器所需的增量数,而不是给定间隔中的元素数。鉴于该问题已被重复数据删除器阻止,我无法回答我认为正确的答案并添加示例。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com