有沒有辦法從後面訪問向量上的元素?我要訪問的倒數第二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