[英]Reverse Iterator not working as expected C++
嘿,我想知道为什么这段代码不给 output 1。
vector<int> myVector{1, 2, 3, 4, 6};
cout << *myVector.rend() << endl;
Output 应该是 1 但它给出随机数。
但在这个例子中,一切都很好。
vector<int> myVector{1, 2, 3, 4, 6};
cout << *myVector.rbegin() << endl;
Output:6
谢谢。
end()
指向最后一个元素之后的 memory 位置。 同样, rend()
指向第一个元素之前的 memory 位置。 它们应该用作标记值——即迭代直到达到该点。 因此,要打印 1,您应该使用:
cout << *(myVector.rend()-1) << endl;
“结束”迭代器实际上是“结束”并且不可取消引用,无论它们是正向还是反向。
顺便说一句:为您启用诊断模式 C++ stdlib。 它会告诉你有什么问题。 你如何做到这一点取决于编译器和标准库。
与end()
给出“范围之后的一项”的无效迭代器相同的方式, rend()
给出“范围之前的一项”的无效迭代器。 因此,您的第一个示例输出 memory 中该位置的任何半随机数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.