gpt4 book ai didi

c++ - 在迭代器上检索最大值

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:01 26 4
gpt4 key购买 nike

我有三个随机访问迭代器 parentchild1child2,它们指向置换数组中的某些值。 (上下文:我正在实现堆排序;那些迭代器包含一个二 fork 树)。

我需要确定具有最大引用值的迭代器(以保持堆的最大堆属性)。所以,如果*parent最大,返回parent,如果*child1最大,返回child1,等

伪代码:

#include <algorithm>

auto iterator = std::max({ parent, child1, child2 });

iterator 现在是 underlying value 最大的迭代器。

问题在于,使用此文字伪代码,std::max 会在此处比较迭代器 itsself,而不是它们的引用值。我可以做 std::max({ *parent, *child1, *child2 }),但它返回 decltype(*parent),那么我如何获得迭代器从那里回来?

我知道使用一些 if 是非常可行的,但是没有更优雅的方法吗?标准库里有什么东西吗?我尝试了几种方法,但它们看起来都很笨重且不方便。

最佳答案

如果您不认为带有自定义比较器的 std::max 笨重,这里是:

auto iterator = std::max({ parent, child1, child2 },
[](auto it_a, auto it_b) { return *it_a < *it_b; });

关于c++ - 在迭代器上检索最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41934836/

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