干净的方式以相反的顺序访问std :: vector元素?

bec*_*cko 1 c++ stdvector

在Python中,访问数组的[-1]第th个元素会给出最后一个元素,并[-2]为倒数第二个元素编制索引.

在C++中是否有类似的漂亮语法std::vector以相反的顺序访问元素?

rod*_*igo 8

Revese迭代器:

for (auto it = v.rbegin(); it != v.rend(); ++it)
{

}
Run Code Online (Sandbox Code Playgroud)

如果要从末尾访问第i个元素:

*(v.rbegin() + i)
Run Code Online (Sandbox Code Playgroud)

或者,如果你不想看起来像一个全知的人:

*(v.end() - i - 1)
Run Code Online (Sandbox Code Playgroud)

请注意,在Python中,您实际上将使用v[-i-1]相同的元素,因此这个元素使用相同的数字.

诀窍是矢量迭代器是RandomAccessIterator这样你可以添加和减去它们的索引.