C ++有助于在STL程序中进行排序

时间:2011-12-09 02:39:34

标签: c++ stl

所以我尝试了所有类型的组合,但是我想对矢量的标题进行排序而我无法找到它们我的问题是如何使用标题进行排序?

  class Seminar

    public:

        Seminar(int number = 0, string date = "yyyy-mm-dd" , string title = "")
        {
          Number = number;
          Date = date;
          Title = title;
        }

        int get_number() const {return Number; }
        string get_date() const {return Date; }
        string get_title() const {return Title; }

    private:
        int Number;     // Seminar number
        string Date;      // Date of Seminar
        string Title;   // Title of Seminar
}

长话短说,程序将读取文件并将信息推送到矢量中。例如:

    Seminar s(integers, calendar, line);

            All.push_back(s);






vector<Seminar> All;

vector<Seminar>::iterator it;


    if(Letter == "F" || Letter == "f")
      {
        sort(All.begin(), All.end(), ?? );
        for(it = All.begin(); it != All.end(); it++)
            {

                cout << it->get_title() << endl;
            }

      }

2 个答案:

答案 0 :(得分:2)

一种简单的方法是为operator<()课程实施Seminar;然后默认的sort算法将使用它并做正确的事情,这样的事情应该起作用:

bool operator<(const Seminar &s1, const Seminar &s2) {
    return s1.get_title() < s2.get_title();
}

答案 1 :(得分:0)

以下是一种方法。您必须使用Sortfunc作为排序函数谓词。

class Sortfunc : public std::binary_function<Seminar, Seminar, bool>
{

public:  

  bool operator()(Seminar lhs, Seminar rhs)
    {
      // use '<' to sort ascending 
      // use '>' to sort descending
      return lhs.get_title() < rhs.get_title();
    }
};