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

时间:2014-02-22 20:00:43

标签: c++ function set

假设我在c ++中使用了一个以下示例:

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

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

error: cannot convert 'std::_Rb_tree_const_iterator<int>' to 'int' in assignment

我正在使用以下功能尝试获取最大/最小值:

min = a.begin();
max = a.end();

2 个答案:

答案 0 :(得分:15)

首先,beginend返回迭代器,您需要在(*)上执行间接操作以获取它们指向的元素。

其次,end返回过去的迭代器,因此实际上并不引用最后一个元素。您可以改为使用反向开始迭代器。

min = *a.begin();
max = *a.rbegin();

答案 1 :(得分:4)

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

min = *a.begin();

接收min元素和

max = *a.rbegin();

接收最多

max = *a.end();

将无效,因为它指向最后一个元素之后的下一个元素。所以它会返回垃圾。