【发布时间】:2014-03-12 02:31:01
【问题描述】:
我尝试使用How do I sort a vector of pairs based on the second element of the pair? 中概述的方法对成对向量进行排序,但是 我的编译器似乎无法解析我的模板。
问题区域大致如下:
template <typename T, typename Tds1, typename Tds2>
void myClass<T,Tds1,Tds2>::myMethod(myTemplateParam<T> &in,
myTemplateParam<T> &out) {
typedef std::pair <Tds2, T> labelDistPair;
std::vector< labelDistPair > labelRanks;
struct sort_pairs {
bool operator()(const std::pair<Tds2, T> &left,
const std::pair<Tds2, T> &right)
{return left.second < right.second;}
};
//...
//Fill in labelRanks - a vector of <float, double> pairs
//...
std::sort(labelRanks.begin(), labelRanks.end(), sort_pairs());
}
}
我的错误消息中最相关的部分似乎是:
/usr/include/c++/4.8/bits/stl_algo.h:5474:5:注意:模板参数推导/替换失败: ... 错误:试图实例化'template void std::sort(_RAIter, _RAIter, _Compare)'
这有意义吗? (当我尝试使用时,我遇到了类似的错误 一个 lambda 函数作为比较函数)
【问题讨论】:
-
您确定这是您的确切代码吗?在我看来很好。我整理了一个类似的例子,它编译得很好。你为
Tds2提供什么论据?