使用迭代器进行索引

indexing with iterators

本文关键字:索引 迭代器      更新时间:2023-10-16

有没有一种方法可以获得迭代器的计数?

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

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

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

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

您想要distancehttp://www.cplusplus.com/reference/std/iterator/distance/

(*iter)->Index(distance(agents.begin(),iter));

可以子字符串迭代器:

int distance = iter - agents.begin();

编辑:

仅适用于随机访问迭代器。(+1个互联网到Let_Me_Be)

一般来说,你总是可以自己破解一些东西:

{
    int i = 0;
    for (auto it = agents.begin(), end = agents.end(); it != end; ++it, ++i)
    {
         (*it)->set_int(i);
    }
}

如果您有随机访问迭代器,您确实可以安全地使用std::distance(agents.begin(), it),正如前面所说的那样。