有没有办法从后面开始访问矢量上的元素?我想访问第二个最后一个元素。目前我正在使用以下内容来实现:
myVector[myVector.size() - 2]
但这似乎很慢而且笨重,有更好的方法吗?
答案 0 :(得分:7)
不太可能更快,但这可能看起来更好:
myVector.end()[-2]
答案 1 :(得分:5)
嗯,你总是可以使用vector :: back()。如果要从后面进行迭代,请使用reverse_iterator:
vector<something>::reverse_iterator iter = v.rbegin();
iter++; //Iterates backwards
矢量是为快速随机访问而制作的,所以你的方式也很好。在任何索引处访问向量元素都是O(1)操作。
答案 2 :(得分:0)
您的方式完全有效且非常快,但您应该检查myVector.size() > 1
。