从后面访问矢量

Fak*_*ken 5 c++ vector

有没有办法从后面开始访问矢量上的元素?我想访问第二个最后一个元素.目前我正在使用以下内容来实现:

myVector[myVector.size() - 2]
Run Code Online (Sandbox Code Playgroud)

但这似乎缓慢而笨重,有更好的方法吗?

Ben*_*igt 7

不太可能更快,但这可能看起来更好:

myVector.end()[-2]
Run Code Online (Sandbox Code Playgroud)

  • 或者`myVector.rbegin()[1]`. (10认同)
  • @Caspin:是的.`std :: vector`提供随机访问迭代器,这是随机访问迭代器的一个属性. (2认同)

fin*_*11b 5

那么你总是可以使用vector :: back().如果要从后面进行迭代,请使用reverse_iterator:

vector<something>::reverse_iterator iter = v.rbegin();
iter++; //Iterates backwards
Run Code Online (Sandbox Code Playgroud)

向量是为快速随机访问而制作的,所以你的方式也很好.在任何索引处访问向量元素是O(1)操作.

  • vector <something> :: reverse_iterator iter = v.rbegin(); (4认同)