是否可以将迭代器作为索引返回?

时间:2011-01-10 16:17:48

标签: c++ stl

例如,如果我像这样使用std::find_if

std::vector<Rect>::iterator it = 
  std::find_if(regions.begin(), regions.end(), find_region(x,y));

我可以直接获得迭代器it的索引吗?

4 个答案:

答案 0 :(得分:8)

<iterator>标头文件中尝试std::distance(regions.begin(), it)

答案 1 :(得分:1)

答案 2 :(得分:1)

使用std :: distance()。但是,请确保通过修改其间的向量来意外地使迭代器无效。

答案 3 :(得分:1)

矢量迭代器是随机访问,因此您只需使用

即可
it - regions.begin()

但是std :: distance适用于更多种类的迭代器类型。