我想为std::sort()创建自定义比较函数,以对一些键值对std::pair进行排序。
这是我的函数:
template <typename K, typename V>
int comparePairs(const void* left, const void* right){
if((((pair<K,V>*)left)->first) <= (((pair<K,V>*)right)->first))
return 1;
else
return -1;
}
然后,在某个类中,我有一个成员为vector of pairs的类成员:
vector<pair<K,V>> items;
使用std::sort()对这个向量按键进行排序的一些方法。
std::sort(items.begin(), items.end(), comparePairs<K,V>);
我在 <某处>
遇到编译错误,错误信息如下:
"无法将参数从 'std::pair<_Ty1,_Ty2>' 转换为 'const void*'"
这是什么错误?
void*
而不是std::pair
呢? - Dominic Rodgerstd::sort
和需要使用const void *
参数的qsort
的比较函数混淆了。为std::sort
编写一个正确的比较函数,该函数接受对pair<K, V>
的引用作为参数,问题就会解决。 - user4815162342