基本上我想反向迭代2 std :: vectors.图层具有形状向量.
通常我可以这样做:
for(int i = 0; i < layers.size(); ++i)
{
for(int j = 0; j < layers[i].shapes.size(); ++j)
{
layers[i].shapes[j].dosomething();
}
}
Run Code Online (Sandbox Code Playgroud)
但是现在我需要反向迭代遍历向量,因此需要使用反向迭代器,但这将如何工作?由于迭代器类似于每个迭代器,我如何访问正在迭代的当前层的当前形状?谢谢
简单的方法:
for(int i = layers.size() - 1; i >= 0; --i)
{
for(int j = layers[i].shapes.size() - 1; j >= 0; --j)
{
layers[i].shapes[j].dosomething();
}
}
Run Code Online (Sandbox Code Playgroud)
"正确"的方式:
for(vector<Layer>::reverse_iterator i = layers.rbegin(); i != layers.rend(); ++i)
{
for(vector<Shape>::reverse_iterator j = i->shapes.rbegin(); j != i->shapes.rend(); ++j)
{
j->dosomething();
}
}
Run Code Online (Sandbox Code Playgroud)