在c ++的set中引用max/min int

Val*_*rok 5 c++ function set

假设我在c ++中使用set有以下示例:

set <int> a;
for (int i = 0; i <10; i++){
//Assume i is a random number
a.insert(i);
}
Run Code Online (Sandbox Code Playgroud)

如何找到上面显示的设置示例的最大值和最小值?理想情况下,我认为以下方法可行,但它会出现以下错误:

error: cannot convert 'std::_Rb_tree_const_iterator<int>' to 'int' in assignment
Run Code Online (Sandbox Code Playgroud)

我正在使用以下函数来尝试获取最大/最小值:

min = a.begin();
max = a.end();
Run Code Online (Sandbox Code Playgroud)

Jos*_*eld 16

首先,beginend返回迭代器,你需要在执行间接(*)来获取它们指向的元素.

其次,end返回last-the-end迭代器,因此实际上不会引用最后一个元素.您可以改为使用反向开始迭代器.

min = *a.begin();
max = *a.rbegin();
Run Code Online (Sandbox Code Playgroud)


Avt*_*Avt 5

a.begin()并且a.end()是迭代器,而不是元素。使用

min = *a.begin();
Run Code Online (Sandbox Code Playgroud)

接收最小元素和

max = *a.rbegin();
Run Code Online (Sandbox Code Playgroud)

接收最大

max = *a.end();
Run Code Online (Sandbox Code Playgroud)

将不起作用,因为它指向最后一个元素之后的下一个元素。因此它将返回垃圾。