假设我在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
首先,begin和end返回迭代器,你需要在执行间接(*)来获取它们指向的元素.
其次,end返回last-the-end迭代器,因此实际上不会引用最后一个元素.您可以改为使用反向开始迭代器.
min = *a.begin();
max = *a.rbegin();
Run Code Online (Sandbox Code Playgroud)
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)
将不起作用,因为它指向最后一个元素之后的下一个元素。因此它将返回垃圾。
| 归档时间: |
|
| 查看次数: |
8768 次 |
| 最近记录: |