有没有办法从后面访问向量上的元素?我要访问的倒数第二element.currently我用下面的实现是:访问后面的向量
myVector[myVector.size() - 2]
但这似乎缓慢而笨重,有没有更好的办法?
有没有办法从后面访问向量上的元素?我要访问的倒数第二element.currently我用下面的实现是:访问后面的向量
myVector[myVector.size() - 2]
但这似乎缓慢而笨重,有没有更好的办法?
不可能是任何更快,但是这可能看起来更好:
myVector.end()[-2]
那么你可以随时使用矢量::回()。如果你想从后面迭代,使用reverse_iterator的:
vector<something>::reverse_iterator iter = v.rbegin();
iter++; //Iterates backwards
载体是快速随机访问做,所以你的方法就是罚款了。在任何索引处访问矢量元素都是O(1)操作。
vector
谢谢,修复它。 – fingerprint211b 2010-06-17 02:13:47
你的方式是完全有效的和相当快,除了你应该检查myVector.size() > 1
。
或者我可以像myvector.at(myVector.end - 2)那样做,并且让它更慢。 – Faken 2010-06-16 21:17:17
'at'使用异常来指示超出范围的错误。我不会在这个简单的情况下使用它。 – 2010-06-16 21:20:26
或'myVector.rbegin()[1]'。 – 2010-06-16 21:28:17
@Pavel:我喜欢这个解决方案最好,它最有意义,看起来很干净。 – Faken 2010-06-16 21:33:31
但是请注意,Ben的观点并不是真正的更快。 – 2010-06-16 22:11:17