我想写一个类的成员函数用于做排序,sort函数的第三个参数compare_degree()是一个比较函数,我想把他封装到类成员函数里面,但是程序报错如下: #include <vector> #include <algorithm> using namespace std; struct node { int index;//节点序号 int degree;//节点度 }; class matrix { public: matrix(); ~matrix(); vector<node> sort_degree(); bool compare_degree(node node_a, node node_b); private: vector<node> nodes; }; bool compare(node node_a, node node_b); matrix::matrix() { } matrix::~matrix() { } bool matrix::compare_degree(node node_a, node node_b) { //按照节点度降序排列 return (node_a.degree > node_b.degree); } bool compare(node node_a, node node_b) { //按照节点度降序排列 return (node_a.degree > node_b.degree); } vector<node> matrix::sort_degree() { vector<node> temp_nodes = nodes; //根据compare_degree规定的规则对数组内的节点排序 sort(temp_nodes.begin(), temp_nodes.end(), compare_degree); sort(temp_nodes.begin(), temp_nodes.end(), compare); return temp_nodes; } int main(void) { matrix G; vector<node> G_degree_rank; G_degree_rank = G.sort_degree(); } |
|
10分 |
using namespace std::placeholders; vector<node> temp_nodes = nodes; //根据compare_degree规定的规则对数组内的节点排序 sort(temp_nodes.begin(), temp_nodes.end(), bind(compare_degree,this,_1,_2)); |
请问这个bind函数是干嘛用的呢?能说一下这样改的理由么 |
|
10分 | |
原来如此,谢谢啦 |