我有一个 std::list<double> foo;
我正在使用
if (foo.size() >= 2){
double penultimate = *(--foo.rbegin());
}
但这总是给我一个任意值penultimate
.
我做错了什么?
最佳答案
而不是递减 rbegin
,你应该递增它,如下所示:1
double penultimate = *++foo.rbegin();
由于rbegin()
返回的是一个反向迭代器,所以++
是容器中向后移动的操作符。请注意,我还删除了多余的括号:这不符合每个人的口味。
目前你的程序的行为是undefined,因为你实际上正在移动到end()
,你不能取消引用它。输出的任意性质是这种未定义行为的表现。
1请保留您目前拥有的最小尺寸检查。
关于c++ - 如何获取列表中的倒数第二个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44206521/