C++中set的rbegin()

set中的数据为1,4,8,9,set.rbegin()得到9,但为什么(--set.rbegin())得到4,而不是8呢

begin是第一个, 是开始, 开始的前面是没有东西, 或逻辑错误, 或未定义. begin请用++.

    std::cout << *(++set.rbegin()) << std::endl; 

当使用--set.rbegin()时,这会返回set中次大的元素,也就是4。如果想获得set中倒数第二大的元素,可以使用(--set.rbegin())--。这是因为set是一种有序容器,--set.rbegin()会让迭代器向前移动一个位置,因此会得到次大的元素。

示例代码:

#include <iostream>
#include <set>

int main()
{
    std::set<int> s{ 1, 4, 8, 9 };
    std::cout << *s.rbegin() << std::endl; // 输出9
    std::cout << *(--s.rbegin()) << std::endl; // 输出4
    std::cout << *((--s.rbegin())--) << std::endl; // 输出8
    return 0;
}

仅供参考,望采纳,谢谢。