我在哪个对象的迭代

时间:2014-07-23 22:27:52

标签: c++ stdvector pugixml

我目前正在使用pugi xml,我经常使用这样的循环:

for (pugi::xml_node sth: root.child("name").children())
{
    //do something
}

然后在某些时候我意识到我需要在WHICH迭代中保存信息,我找到了一些值,因为稍后将需要在此循环之外。如果不添加计数器,我可以告诉我的迭代次数吗?

此外,如果该对象是这样的矢量:

std::vector<type> vtr;
for (std::vector<type>::iterator it = vtr.begin(); it != vtr.end(); ++it)
{
    //which iteration?
}

1 个答案:

答案 0 :(得分:5)

在任何感兴趣的迭代器中,你都可以这样做

auto index = it - vtr.begin();

所以vtr.begin()将是索引0,然后每个元素从那里递增 或者您可以使用std::distance

auto index = std::distance(vtr.begin(), it)