如何在C++中打印集合中的最后一个元素

imt*_*nan 1 c++ iterator stl set

我正在尝试打印set<int>s;实际最后一个元素为 9的集合的最后一个元素。

set<int>:: iterator it=s.begin();
while(it!=s.end())
{
    cout<<*it<<endl;
    it++;
}
Run Code Online (Sandbox Code Playgroud)

当我使用这个循环时,通过这个集合,它显示最后一个元素是 9,这是正确的。

但是当使用这段代码时,它显示最后一个元素是 4,这是不正确的。

int setint= *s.end();
cout<<setint<<endl;
Run Code Online (Sandbox Code Playgroud)

但是当我使用此代码打印集合的第一个元素时,它会正确打印第一个元素

int setint= *s.begin();
    cout<<setint<<endl;
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

rus*_*tyx 5

end()点在集合的末尾。它永远不应该被取消引用。

您可以rbegin()改用:

if (!myset.empty()) {
    cout << *myset.rbegin() << endl;
}
Run Code Online (Sandbox Code Playgroud)