gpt4 book ai didi

c++ - 第二大元素的 std::max_element?

转载 作者:行者123 更新时间:2023-11-30 02:38:45 29 4
gpt4 key购买 nike

STL 提供 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);

还有什么东西可以得到第n大元素的迭代器吗?

(请注意,max_element 返回一个迭代器,这实际上很重要:我寻找的不是值本身,而是可迭代对象中第 n 个最大元素的位置。)

最佳答案

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;
});

关于c++ - 第二大元素的 std::max_element?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30488586/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com