我有三個隨機訪問迭代器parent
,child1
和child2
,它們指向置換數組中的某些值。 (上下文:我正在實現heapsort;那些迭代器包含一個二進制子樹)。在迭代器上檢索最大值
我需要確定迭代器,它具有最大的參考值(以保持堆的最大堆屬性)。所以,如果*parent
是最大的,返回parent
,如果*child1
是最大的,返回child1
等
僞代碼:
#include <algorithm>
auto iterator = std::max({ parent, child1, child2 });
iterator
現在是其潛在價值是最大的迭代器。
問題是,使用這個文字僞代碼,std::max
會在這裏比較迭代器本身,而不是它們的引用值。我可以做std::max({ *parent, *child1, *child2 })
,但它返回decltype(*parent)
,那麼我怎樣才能從那裏獲取迭代器?
我知道使用if
s很簡單,但是沒有更優雅的方法嗎?標準庫在那裏有東西嗎?我嘗試了幾件事,但它們看起來都很龐大而且不方便。