fue*_*zig 4 c++ algorithm std max
标准库提供了std::max_element查找可迭代中最大元素的功能,例如:
std::vector<float>::const_iterator max =
std::max_element(obj.pt()->begin(), obj.pt()->end());
return std::distance(obj.pt()->begin(), max);
Run Code Online (Sandbox Code Playgroud)
还有什么可以获取第 n 大元素的迭代器吗?
(请注意,max_element返回一个迭代器,这实际上很重要:我不是在寻找值本身,而是在可迭代中寻找第 n 个最大元素的位置。)
小智 6
max_element() 方法可用于通过传递 lambda 函数来获取第二大元素,该函数将元素与先前找到的最大元素进行比较,如果它等于最大元素,则它将简单地跳过该元素。
auto largest = max_element(vec.begin(), vec.end());
auto secondLargest = max_element(vec.begin(), vec.end(),
[&largest](unsigned long &a, unsigned long &b) {
if (a == *largest) return true;
if (b == *largest) return false;
return a < b;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6831 次 |
| 最近记录: |