gpt4 book ai didi

c++ - 如何在 STL 算法中使用模板函数作为比较器 ex : make_heap

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:27 25 4
gpt4 key购买 nike

#include<iostream>
#include<algorithm>
using namespace std;

template <typename T>
bool HeapComparator (T,T);

template <typename T>
void PrintArray(T arr,int size)
{
for(int i=0;i<size;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}

int main()
{
int arr[7]={1,4,2,5,7,6,3};
int size=7;
PrintArray(arr,size);

cout<<"Max Heap:"<<endl;
make_heap(arr,arr+size); //creates MAX Heap, as no comparator provided.
PrintArray(arr,size);

cout<<"Min Heap:"<<endl;
make_heap(arr,arr+size,HeapComparator); //compilation error here.
PrintArray(arr,size);

return 0;
}

template <typename T>
bool HeapComparator(T a, T b)
{
if(a>b)
return false;
else
return true;
}

这是行不通的。如何使用模板函数作为比较器?

最佳答案

你需要实例化你的模板函数:

make_heap(arr,arr+size,HeapComparator<int>);

关于c++ - 如何在 STL 算法中使用模板函数作为比较器 ex : make_heap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19924136/

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