我声明然后定义一个执行比较的函数:
template <class KEY, class VALUE>
bool compareFlatMapElements(
typename SortedPairsVector<KEY, VALUE>::ElementType& first,
typename SortedPairsVector<KEY, VALUE>::ElementType& second);
// Compares the specified 'first' and 'second' using
// 'bsl::less<KEY>' to compare the values stored in 'first()' of
// each pair held by the 'FlatMap_Element.
template <class KEY, class VALUE>
inline
bool compareFlatMapElements(
typename SortedPairsVector<KEY, VALUE>::ElementType& first,
typename SortedPairsVector<KEY, VALUE>::ElementType& second)
{
return first.data().first < second.data().first;
}
然后我尝试在排序中使用它
std::sort(d_data.begin(), d_data.end(), compareFlatMapElements);
导致以下错误的原因是什么?如何解决?
error: no matching function for call to 'sort(..., ..., <unresolved overloaded function type>)'
答案 0 :(得分:5)
没有模板参数,没有免费的常备功能compareFlatMapElements
。
如果d_data
的密钥类型为Key
且值类型d_data
为Value
,
使用
std::sort(d_data.begin(), d_data.end(), compareFlatMapElements<Key, Value>);