相关疑难解决方法(0)

对自定义对象的矢量进行排序

如何排序包含自定义(即用户定义)对象的向量.
可能应该使用标准STL算法与谓词(函数或函数对象)一起排序,该谓词将在自定义对象中的一个字段(作为排序键)上操作.
我是在正确的轨道上吗?

c++ sorting stl

231
推荐指数
9
解决办法
36万
查看次数

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
查看次数

初始化STL优先级队列

我仍然对STL中的优先级队列感到困惑.这是我想实现的目标,比如说:我有一个名为Record的结构,它包含一个字符串字和一个int计数器.例如:我有很多这些记录(在示例程序中,只有5个),现在我想保留前N个记录(在样本中,3).

我现在知道我可以在Record中重载operator <,并将所有记录放在一个向量中,然后初始化priority_queue,如:

priority_queue< Record, vector<Record>, less<Record> > myQ (myVec.begin(),myVec.end());
Run Code Online (Sandbox Code Playgroud)

但是,正如我所理解的那样,控制矢量myVec的大小并不容易,因为它没有按我的意愿排序.

我真的不明白为什么以下不能工作:

struct Record
{
    string word;
    int count;
    Record(string _word, int _count): word(_word), count(_count) { };
    /*
      bool operator<(const Record& rr)
      {
          return this->count>rr.count;
      }
    */
    bool operator() (const Record& lhs, const Record& rhs)
    {
        return lhs.count>rhs.count;
    }
};

void test_minHeap()
{
    priority_queue<Record> myQ;
    Record arr_rd[] = {Record("William", 8),
                       Record("Helen", 4),
                       Record("Peter", 81),
                       Record("Jack", 33),
                       Record("Jeff", 64)};
    for(int i = 0; i < 5; i++)
    {
        if(myQ.size() < 3) …
Run Code Online (Sandbox Code Playgroud)

c++ stl initialization vector priority-queue

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×3

stl ×3

sorting ×2

attributes ×1

initialization ×1

priority-queue ×1

vector ×1