将迭代器转换为标量索引?

时间:2013-10-29 13:02:42

标签: c++ iterator

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

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

1 个答案:

答案 0 :(得分:11)

std::distance

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

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