首页 > 代码库 > 自定义结构或类的比较
自定义结构或类的比较
存放在数组或vector中的排序:
定义普通函数:
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 struct act{ 5 int num; 6 int s; 7 int e; 8 }; 9 bool lessact(const act& a1,const act &a2){10 return a1.e<a2.e;11 }12 int main() {13 14 act *all=new act[n];15 16 sort(all.begin(),all.end(),lessact);17 18 }
定义成员函数:
在函数内部定义<或者>,再在排序时候使用less<>(),或者greater<>()。
如果是greater,要注意头文件:#include <functional>
1 #include<iostream> 2 #include<algorithm> 3 #include <functional> 4 using namespace std; 5 6 struct Thing 7 { 8 int v;//单价 9 int w;//重量10 bool operator<(const Thing& other)const{11 return v < other.v;12 }13 bool operator>(const Thing& other)const{14 return v > other.v;15 }16 };17 18 ...19 sort(t, t + n, greater<Thing>());20 21 ...
如果是存放在vector中,甚至可以直接比较两个vector:v1>v2
如果是用在set或者map中,则可以定义单独的struct或类,也可以是成员函数
class SymbolLess : public std::binary_function<Symbol, Symbol, bool>{public: bool operator () (Symbol* lhs, Symbol* rhs) const { return lhs->getContent()< rhs->getContent(); } }; ...set<Symbol*, SymbolLess> Symbols;//使用...
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。