Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++中打印SET中的最后一个元素_C++_Stl_Iterator_Set - Fatal编程技术网

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

如何在C++中打印SET中的最后一个元素,c++,stl,iterator,set,C++,Stl,Iterator,Set,我试图打印集合的最后一个元素;其中实际的最后一个元素是9 set<int>:: iterator it=s.begin(); while(it!=s.end()) { cout<<*it<<endl; it++; } 当我使用这个循环时,通过这个集合,它显示最后一个元素是9,这是正确的 但当使用这段代码时,它显示最后一个元素是4,这是不正确的 int setint= *s.end(); cout<<setint<<en

我试图打印集合的最后一个元素;其中实际的最后一个元素是9

set<int>:: iterator it=s.begin();
while(it!=s.end())
{
    cout<<*it<<endl;
    it++;
}
当我使用这个循环时,通过这个集合,它显示最后一个元素是9,这是正确的

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

int setint= *s.end();
cout<<setint<<endl;
但当我使用这段代码打印集合的第一个元素时,它会正确地打印第一个元素

int setint= *s.begin();
    cout<<setint<<endl;

我该怎么做呢?

end实际上指向集合内容之外的元素:

相反,您应该使用反向迭代器:


end实际上指向集合内容之外的元素:

相反,您应该使用反向迭代器:

超过集合末尾的端点。它永远不应该被取消引用

您可以改为使用:

超过集合末尾的端点。它永远不应该被取消引用

您可以改为使用:


end将一个不可解引用的迭代器返回到一个虚元素,该虚元素的位置超过实际的最后一个元素。请阅读方法的文档。如果仔细查看第一个代码段,您会发现没有为它执行while循环==s.end,最后一次迭代是在s.end之前的元素中,库中的所有间隔都是半开的,并由开头和结尾的一个部分指定。end返回一个不可取消引用的迭代器,使其指向一个虚元素,该虚元素的位置超过实际的最后一个元素。请阅读方法的文档。如果仔细查看第一个代码段,您会发现没有为它执行while循环==s.end,最后一次迭代是在s.end之前的元素中,库中的所有间隔都是半开的,并且由开始和结束后的一个间隔指定。
if (!mySet.empty())
{
    std::cout << "Last element is: " << *mySet.rbegin() << std::endl; 
}
if (!myset.empty()) {
    cout << *myset.rbegin() << endl;
}