list排序
#include <iostream>#include <vector>#include <list>#include <algorithm>using namespace std;class Job{public: int ID; int time; void set(int ID,int time) { this->ID=ID; this->time=time; } void print() { cout<<"("<<ID<<","<<time<<")"<<endl; }};bool comp_job( Job j1, Job j2){ return j1.time>j2.time;}void main(){ vector<Job> x(3); x[0].set(0,1); x[1].set(1,5); x[2].set(2,3); //Job m; list <Job> y; list<Job>::iterator i; y.push_back(x[0]); y.push_back(x[1]); y.push_back(x[2]); sort(y.begin(),y.end(),comp_job); for (i=y.begin();i!=y.end();i++) { i->print(); }}#include <iostream>#include <vector>#include <list>#include <algorithm>using namespace std;class Job{public: int ID; int time; void set(int ID,int time) { this->ID=ID; this->time=time; } void print() { cout<<"("<<ID<<","<<time<<")"<<endl; } friend bool operator < (Job j1, Job j2) { return j1.time < j2.time; }};void main(){ vector<Job> x(3); x[0].set(0,1); x[1].set(1,5); x[2].set(2,3); //Job m; list <Job> y; list<Job>::iterator i; y.push_back(x[0]); y.push_back(x[1]); y.push_back(x[2]); y.sort(); for (i=y.begin();i!=y.end();i++) { i->print(); } system("pause");}
[解决办法]
嗯,list不能用STL算法排序,无效的。成员函数有。
[解决办法]
能用sort()的必须支持RandomAccessIterator,而list的本性是sequential的,故而它本身提供了特别版的sort成员。
[解决办法]
RandomAccessIterator
是这个原因
[解决办法]
list 在内存中是不连续的
list有自己的成员函数 sort
不用算法中的排序
[解决办法]
受用,但是相对来说两者的具体用法,那位能解释下吗?谢谢!
[解决办法]