我在std::vector上使用反向迭代器,并根据以下链接进行操作:

http://www.cplusplus.com/reference/stl/vector/rbegin/
myVector.rbegin()是 vector 的最后一个元素。就我而言,我实际上是在past the end上获得rbegin()迭代器,并从rend()中获得了fist元素。我本来希望rend()给我past the end迭代器,而rbegin()给我容器中的最后一个元素。我整个事情都理解错了吗?

以下是我的代码,没什么特别的。我在分配之后放了一个断点,上面是我在调试器中得到的结果(VecDebugCubesstd::vector<myStructure>的类型定义)

VecDebugCubes::reverse_iterator itr    = pActiveDebugCubes.rbegin();
VecDebugCubes::reverse_iterator itrEnd = pActiveDebugCubes.rend();
while (itr != itrEnd)
{
  (*itr)->printDebugValues();
  ++itr;
}

最佳答案

参见http://www.cplusplus.com/reference/std/iterator/reverse_iterator/base/

取消引用反向迭代器将返回与您在调试器中看到的值不同的值。

10-06 04:06