c++ - 反向迭代器未按预期工作 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
谢谢。
解决方案
end()
指向最后一个元素之后的内存位置。同样,rend()
指向第一个元素之前的内存位置。它们应该用作标记值——即迭代直到达到该点。因此,要打印 1,您应该使用:
cout << *(myVector.rend()-1) << endl;
推荐阅读
- python - 除非以 root 身份运行,否则 Pygame 音频将无法正常启动
- highcharts - Highchart - 更改线性量规图表的次要间距
- node.js - 如何在redis中使用hmset将数组添加到散列
- java - JMock:预期一次,从不调用
- elasticsearch - Elasticsearch 多个搜索词
- javascript - 保存或编辑数据后重定向?
- windows - Neo.ClientError.Procedure.ProcedureNotFound Neo4j Windows 桌面版
- javascript - 使用 jquery 用一个月的总天数填充表数据
- delphi - delphi:组合框搜索文本与项目文本大小写相同
- python - 如何编写一个接收整数的函数 function(n),并使用 while 循环返回前 n 个偶数的总和?