次のように、任意のコンパレータを使用してテンプレート型 QList 内のテンプレート型要素を検索できる、テンプレートのバイナリ検索アルゴリズムを書きたいと思います。
template<typename T,typename compare_less>
static int binary_search(QList<T>* list, T target) {
int low = 0;
int high = list->count()-1;
while (low <= high) {
int middle = low + (high - low)/2;
if (compare_less(*target, *list[middle]))
high = middle - 1;
else if (compare_less(*list[middle],*target))
low = middle + 1;
else
return middle;
}
return low;
}
QDateTime* テンプレート パラメーターで動作させるために、これを正しく実装するにはどうすればよいですか? 次のように関数を呼び出したいと思います。
int index = binary_search<QDateTime*, ???>(dateTimeList,date);
dateTimeList は QList 型で、date は QDateTime* 型で、クエスチョン マークの代わりに何を書けばよいかまったくわかりません。
誰かがアルゴリズムを正しく実装するのを手伝ってくれて、これらの引数でアルゴリズムを呼び出す方法を教えてくれますか?