可能重复:
How to use std::sort with a vector of structures and compare function?
我有一个cat对象(什么?)和一个catSort对象,它显然可以对cat对象进行排序。以下是课程
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();
我在排序矢量时遇到困难,我该怎么做呢?我应该循环遍历cats
属性并将它们存储在临时向量中然后返回吗?有更简单的方法吗?
答案 0 :(得分:15)
您应该在猫上实施operator<
,以便对猫进行分类:
class cat {
public:
int age;
bool operator< (const cat &other) const {
return age < other.age;
}
};
然后,您可以在数组中包含“algorithm”标头并使用std::sort
:
vector< cat > catSorter::SortCatsByAge(){
vector< cat > cats_copy = cats;
std::sort(cats_copy.begin(), cats_copy.end());
return cats_copy;
}