我目前正在使用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)