对包含Struct的Vector排序
2010-06-21 13:29
309 查看
一、
一般都是把Comparer 放到StructTerm里面,用的时候用StructTerm::Comparer
二、
第一种方法为重载<运算符,以前习惯使用的。
第二种方法是使用函数对象,以后尽量使用这个。
#include <iostream> #include <vector> #include <algorithm> using namespace std; struct StructTerm { int TermID; float Occurency; }; typedef vector<StructTerm> TERMS; class Comparer { public: bool operator () (const StructTerm & va1, const StructTerm & va2) { return va1.Occurency > va2.Occurency; } }; int main() { TERMS terms; StructTerm s; s.TermID = 1; s.Occurency = 0.8; terms.push_back(s); s.TermID = 2; s.Occurency = 0.6; terms.push_back(s); s.TermID = 2000; s.Occurency = 0.68; terms.push_back(s); sort(terms.begin(), terms.end(), Comparer()); for(int i = 0; i < terms.size(); ++i) { cout << terms[i].TermID << " "; } cout << endl; }
一般都是把Comparer 放到StructTerm里面,用的时候用StructTerm::Comparer
二、
#include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; struct StructTerm { string name; int age; }; bool operator < (const StructTerm & va1, const StructTerm & va2) { return va1.age < va2.age; } class Comparer { public: bool operator () (const StructTerm & va1, const StructTerm & va2) { return va1.name < va2.name; } }; int main() { vector<StructTerm> term; StructTerm s; s.name = "ofdspo"; s.age = 2; term.push_back(s); s.name = "jfkdsu"; s.age = 85; term.push_back(s); s.name = "uiofuso"; s.age = 19; term.push_back(s); s.name = "fdserw"; s.age = 20; term.push_back(s); s.name = "rgdsgf"; s.age = 43; term.push_back(s); sort(term.begin(), term.end()); int i; for(i = 0; i < term.size(); ++i) { cout << term[i].name << " " << term[i].age << endl; } cout << endl; sort(term.begin(), term.end(), Comparer()); for(i = 0; i < term.size(); ++i) { cout << term[i].name << " " << term[i].age << endl; } return 0; }
第一种方法为重载<运算符,以前习惯使用的。
第二种方法是使用函数对象,以后尽量使用这个。
相关文章推荐
- 对包含Struct的Vector就其中的一种属性排序 [转贴]
- vector是序列式容器而set是关联式容器。set包含0个或多个不重复不排序的元素。
- struct中包含vector<int>时,push_back的时候出现内存错误
- vector中struct等自定义结构排序
- 使用STL库sort函数对vector进行排序
- vector按存储的结构体的某一字段排序
- ES分组聚合:计算每个tag下的商品数量且某个filed包含指定关键字,分组,平均,每个tags下的平均价格,排序,指定范围区间
- 2015 去哪儿校招--对字符数组中元素包含某个单词个数的排序
- STL中对vector容器中的结构体进行排序
- vector按存储的结构体的某一字段排序
- vector之排序
- mongodb 在包含or条件查询的时候,尽量不使用排序
- 对vector等STL标准容器进行排序操作
- c++ vector 排序
- 对vector等STL标准容器进行排序操作
- struct基础&通过struct和sort结合代替vector列排列
- VC 中使用 vector<struct Empoyee> Var定义 struct Employee
- vector排序
- .net Undocumented (1) SimpleBitVector struct
- vector<struct st_jn_record_plan_week_info> *infoS = &m_PlanInfo[info[i].SubEquId];