1
class RankList {
public:
struct RankListComparator {
bool operator()(const std::pair<boost::numeric::ublas::vector<double>, double>& a, const std::pair<boost::numeric::ublas::vector<double>, double>& b) {
return a.second >= b.second;
}
};
void push_back(boost::numeric::ublas::vector<double> features, double label) {
m_list.push_back(std::pair<boost::numeric::ublas::vector<double>, double>(features, label));
}
void sort() {
std::sort(m_list.begin(), m_list.end(), RankListComparator());
}
protected:
std::vector<std::pair<boost::numeric::ublas::vector<double>, double> > m_list;
};
上面的sort()有什麼問題?我得到一個:std ::排序獲取std :: bad_alloc
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
當我調用sort()。 gdb是不給我任何有用的...
我認爲這個問題有關係,因爲我在一個類中?
編輯:解決
問題是這條線
return a.second >= b.second;
改爲
return a.second > b.second;