gpt4 book ai didi

c++ - C++中的通用二进制搜索

转载 作者:太空宇宙 更新时间:2023-11-04 15:47:45 26 4
gpt4 key购买 nike

我想写一个模板二分搜索算法,它可以使用任意比较器在模板类型 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* 类型,我真的不知道该在问号处写什么。

谁能帮我正确实现算法并告诉我如何使用这些参数调用算法?

最佳答案

如果Qt documentation,您不必执行任何操作已验证。只需将 std::binary_search 与您的列表的 .begin() 和 .end() 一起使用,如果您需要实现比较器,请执行此操作并将其传递给 STL 算法。

关于c++ - C++中的通用二进制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13844200/

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