首页 > 解决方案 > 反向迭代器未按预期工作 C++

问题描述

嘿,我想知道为什么这段代码不给 1 输出。


    vector<int> myVector{1, 2, 3, 4, 6};
    cout << *myVector.rend() << endl;

输出应为 1,但它给出随机数。

但在这个例子中,一切都很好。


    vector<int> myVector{1, 2, 3, 4, 6};
    cout << *myVector.rbegin() << endl;

输出:6

谢谢。

标签: c++

解决方案


end()指向最后一个元素之后的内存位置。同样,rend()指向第一个元素之前的内存位置。它们应该用作标记值——即迭代直到达到该点。因此,要打印 1,您应该使用:

cout << *(myVector.rend()-1) << endl;

推荐阅读