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;
}
仅供参考,望采纳,谢谢。