相关疑难解决方法(0)

C++/STL是否支持按属性对对象进行排序?

我想知道STL是否有这方面的支持:

说我有这样一个类:

class Person
{
public:
  int getAge() const;
  double getIncome() const;
  ..
  ..
};
Run Code Online (Sandbox Code Playgroud)

和矢量:

vector<Person*> people;
Run Code Online (Sandbox Code Playgroud)

我想按照他们的年龄对人的矢量进行排序:我知道我可以通过以下方式进行:

class AgeCmp
{
public:
   bool operator() ( const Person* p1, const Person* p2 ) const
   {
     return p1->getAge() < p2->getAge();
   }
};
sort( people.begin(), people.end(), AgeCmp() );
Run Code Online (Sandbox Code Playgroud)

是否有一个不那么冗长的方法来做到这一点?仅仅因为我想基于'属性'进行排序而必须定义整个类似乎有点过分.这样的事可能吗?

sort( people.begin(), people.end(), cmpfn<Person,Person::getAge>() );
Run Code Online (Sandbox Code Playgroud)

c++ sorting attributes stl

22
推荐指数
3
解决办法
7886
查看次数

标签 统计

attributes ×1

c++ ×1

sorting ×1

stl ×1