我所处的对象的迭代



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

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

然后在某个时候,我意识到我需要保存我在哪个迭代中找到了一些值的信息,因为它将在稍后的循环之外被需要。我能在不添加计数器的情况下知道我在哪个迭代吗?

同样,如果对象是一个像这样的向量:

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

对于任何感兴趣的迭代器,您都可以这样做

auto index = it - vtr.begin();

所以vtr.begin()的索引是0,然后每个元素从这里开始递增。
也可以使用std::distance

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

相关内容

  • 没有找到相关文章

最新更新