67

我有一个std::set<int>,找到这个集合中最大的 int 的正确方法是什么?

4

6 回答 6

117

你用的是什么比较器?

默认情况下,这将起作用:

if(!myset.empty())
    *myset.rbegin();
else
    //the set is empty

这也将是常数时间,而不是像 max_element 解决方案那样是线性的。

于 2009-08-27T16:04:47.997 回答
34

集合总是有序的。假设您使用的是默认比较(更少),只需抓住集合中的最后一个元素。rbegin() 可能有用。

于 2009-08-27T16:06:16.683 回答
6

我相信您正在寻找std::max_element

max_element()函数返回一个迭代器,指向范围 [start,end) 中的最大元素。

于 2009-08-27T16:03:43.660 回答
5

由于 set 默认按升序对元素进行排序,因此只需选取 set 中的最后一个元素。

于 2009-08-27T16:10:14.303 回答
1
if(!myset.empty())
    *myset.rend();
else
    //the set is empty

在有序整数集中,最后一个元素是最大的元素。

于 2021-12-16T11:06:46.260 回答
-4

push()set<int>将值保存int max在全局变量中之前

于 2017-08-09T06:12:53.300 回答