有没有办法可以获得迭代器的计数?
所以,如果一开始我有这个:
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(????)
}
答案 0 :(得分:6)
您想要distance
http://www.cplusplus.com/reference/std/iterator/distance/
(*iter)->Index(distance(agents.begin(),iter));
答案 1 :(得分:2)
你可以减去迭代器:
int distance = iter - agents.begin();
编辑:
仅适用于随机访问迭代器。 (+1互联网到Let_It_Be)
答案 2 :(得分:1)
大多数情况下,你总是可以自己解决问题:
{
int i = 0;
for (auto it = agents.begin(), end = agents.end(); it != end; ++it, ++i)
{
(*it)->set_int(i);
}
}
如果您有随机访问迭代器,您确实可以安全地使用std::distance(agents.begin(), it)
,如前所述。