我想知道是否有办法获得随机访问迭代器的索引.例如:
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 = ...
}
Run Code Online (Sandbox Code Playgroud)
请原谅,如果这是超级琐事.一个显而易见的解决方案是按索引进行迭代,但我的想法是考虑随机访问迭代器,迭代器可能有一种方法告诉你它的索引是什么,比如myIndex = iter.index()
ild*_*arn 10
myIndex = iter - myStringVec.begin();
Run Code Online (Sandbox Code Playgroud)
要么
myIndex = std::distance(myStringVec.begin(), iter);
Run Code Online (Sandbox Code Playgroud)
还要注意,要便携(并且可能消除编译器警告),myIndex应该是类型std::vector<std::string>::difference_type而不是int.
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |