私は3つのランダムアクセスイテレータparent
,child1
、およびchild2
を持っています。これらは、並べ替えられた配列の特定の値を指しています。 (コンテキスト:私はheapsortを実装しています;それらのイテレータはバイナリサブツリーを構成します)。イテレータで最大値を取得
(ヒープの最大ヒーププロパティを維持するために)最も大きな参照値を持つイテレータを決定する必要があります。
#include <algorithm>
auto iterator = std::max({ parent, child1, child2 });
iterator
は今根本的な価値が最大でイテレータです:*parent
が最も大きいのであれば、など
擬似コード、child1
返し、*child1
が最大である場合、parent
を返します。
問題は、このリテラルの擬似コードを使用して、std::max
はない、ここでイテレータに彼らの参照値をitsselfを比較するだろうということです。私はstd::max({ *parent, *child1, *child2 })
を行うことができましたが、それはdecltype(*parent)
を返すので、どのようにそこからイテレータを取得するのですか?
if
を使用して実現可能であることはわかっていますが、もう少しエレガントな方法はありませんか?標準ライブラリには何かがありますか?私はいくつかのことを試みましたが、それらはすべてかさばっていて不便でした。