Sort a vector of objects by an object's attribute [duplicate]

匿名 (未验证) 提交于 2019-12-03 08:48:34

问题:

Possible Duplicate:
How to use std::sort with a vector of structures and compare function?

I have a cat object (what?) and a catSort object which obviously sorts the cat objects. Below is the classes

class cat { public:     int age; };  class catSorter { public:     vector< cat > cats;     vector< cat > SortCatsByAge();     void AddCat( cat new_cat ); };  void catSorter::AddCat(cat new_cat){     this->cats.push_back(new_cat) }  vector< cat > catSorter::SortCatsByAge(){     // Sort cats here by age! }   cat tim; tim.age = 10;  cat mark; mark.age = 20  cat phil; phil.age = 3;  catSorter sorter; sorter->AddCat(tim); sorter->AddCat(mark); sorter->AddCat(phil);  std::<vector> sortedcats = sorter->SortCatsByAge(); 

I'm having difficulties sorting a vector, how would I go about doing this? Should I just loop through the cats attribute and store them inside a temporary vector then return that? Is there an easier way to do this?

回答1:

You should implement an operator< on cat so that cats can be sorted:

class cat { public:     int age;     bool operator< (const cat &other) const {         return age < other.age;     } }; 

You can then include the "algorithm" header and use std::sort on your array:

vector< cat > catSorter::SortCatsByAge(){    vector< cat > cats_copy = cats;    std::sort(cats_copy.begin(), cats_copy.end());    return cats_copy; } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!