【问题标题】:What does it - vector.begin() actually do?它 - vector.begin() 实际上是做什么的?
【发布时间】:2026-01-03 06:20:04
【问题描述】:

因此,根据我学到的获取迭代器在向量中的位置,我们这样做:

it - vector.begin();

有人能解释一下这个减号“实际上”有什么作用吗?

【问题讨论】:

  • 这意味着完全一样的东西减去两个指针的意思。你知道两个指针相减会得到什么吗?
  • @SamVarshavchik 我更喜欢从相反的方向考虑它。指针减法是迭代器减法的一种特殊情况。一旦理解了迭代减法,他们只需要知道指针是迭代器,他们就可以立即理解指针减法的含义。
  • std::distance(vector.begin(), it); 更好地表达 IMO 的意图。 (并与非随机迭代器一起使用)

标签: c++ vector iterator


【解决方案1】:

大概vectorstd::vector 的一个实例,it 是该容器元素的迭代器。

给定两个随机访问迭代器到相同的范围,从另一个中减去一个会导致从一个元素到其兄弟元素的距离。结果与从另一个元素的索引中减去一个元素的索引相同。

距离就像数字线一样:从低指数到高指数的距离是负数。

begin 返回一个指向容器第一个元素的迭代器。第一个元素的索引为0。因此,从另一个迭代器中减去begin迭代器会导致另一个迭代器与开头的距离,该距离与该迭代器所指向的元素的索引相同。

【讨论】:

    最近更新 更多