将迭代器转换为标量索引

Turn an iterator into a scalar index?

本文关键字:标量 索引 转换 迭代器      更新时间:2023-10-16

有没有办法确定迭代器在其容器中的位置? 我正在寻找的"位置"将采用整数值的形式,它描述了迭代器距离容器开头的距离。

例如,vector.front()0vector.back()vector.size() - 1

std::distance

size_t index = std::distance( vector.begin(), it );

它在幕后所做的只是it - v.begin()(对于随机访问迭代器,例如 vector)。否则,它只会递增第一个参数,直到到达第二个参数(这不是特别有效)。