C++ 使用向量时查找索引<>;::迭代器

C++ 使用向量时查找索引<>;::迭代器,c++,C++,我想知道是否有办法获得随机访问迭代器的索引。例如: int myIndex = -1; for(std::vector<std::string>::iterator iter = myStringVec.begin(); iter != myStringVec.end(); iter++) { if(someFunction(*iter)) //got a hit on this string myIndex = ... } intmyindex=-1

我想知道是否有办法获得随机访问迭代器的索引。例如:

int myIndex = -1;
for(std::vector<std::string>::iterator iter = myStringVec.begin();
    iter != myStringVec.end();
    iter++)
{
  if(someFunction(*iter))  //got a hit on this string
    myIndex = ...
}
intmyindex=-1;
for(std::vector::iterator iter=myStringVec.begin();
iter!=myStringVec.end();
iter++)
{
如果(someFunction(*iter))//找到了这个字符串
我的索引=。。。
}
请原谅,如果这是超琐碎的。一个明显的解决方案是按索引进行迭代,但我的想法是,对于随机访问迭代器,迭代器可能有一种方法告诉您它的索引是什么,比如
myIndex=iter.index()

还请注意,为了便于移植(并可能消除编译器警告),
myIndex
应为
std::vector::difference\u类型,而不是
int
,您可以执行以下操作:

if(someFunction(*iter))  //got a hit on this string
{
   myIndex = std::distance(myStringVec.begin(), iter);
}

您可以使用
std::distance
或减法
std:distance
的优点是使用不提供随机访问的迭代器(但使用专门化为随机访问迭代器提供恒定时间内的距离)

myIndex = std::distance(myStringVec.begin(), iter);
if(someFunction(*iter))  //got a hit on this string
{
   myIndex = std::distance(myStringVec.begin(), iter);
}