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

C++ 是否可以将迭代器作为索引返回?,c++,stl,C++,Stl,例如,如果我像这样使用std::find_if: std::vector<Rect>::iterator it = std::find_if(regions.begin(), regions.end(), find_region(x,y)); std::vector::iterator it= std::find_if(regions.begin(),regions.end(),find_region(x,y)); 我可以直接获得迭代器的索引吗?从头文件尝试。使用std::

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

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

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

头文件尝试。

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

向量迭代器是随机访问的,因此您可以简单地使用

it - regions.begin()
但是std::distance适用于更广泛的迭代器类型