使用迭代器进行索引

Sir*_*lot 1 c++

有没有办法可以获得迭代器的计数?

所以,如果一开始我有这个:

for (int i = 0; iter < agents.size(); ++i)
{
    agents[i]->Index(i);
}
Run Code Online (Sandbox Code Playgroud)

请记住Index()设置一个整数,我将如何使用迭代器?

for (std::vector<Agent*>::iterator iter = agents.begin(); iter < agents.end(); ++iter)
{
    (*iter)->Index(????)
}
Run Code Online (Sandbox Code Playgroud)

Let*_*_Be 6

你想要distance http://www.cplusplus.com/reference/std/iterator/distance/

(*iter)->Index(distance(agents.begin(),iter));
Run Code Online (Sandbox Code Playgroud)

  • 我倾向于只使用随机访问迭代器的差异或使用计数!如果迭代器不支持减法,则循环中的努力变为二次方.保持计数的成本相对可忽略不计. (4认同)