C ++ помощь по сортировке в программе STL - PullRequest
0 голосов
/ 09 декабря 2011

Итак, я перепробовал все типы комбинаций, но я хочу отсортировать заголовки вектора и не могу получить к ним мой вопрос: как мне настроить сортировку для работы с заголовком?

  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 ]

2 голосов
/ 09 декабря 2011

Один простой способ - реализовать operator<() для вашего Seminar класса;тогда алгоритм по умолчанию sort будет использовать его и делать правильные вещи, что-то вроде этого должно работать:

bool operator<(const Seminar &s1, const Seminar &s2) {
    return s1.get_title() < s2.get_title();
}
0 голосов
/ 09 декабря 2011

Что-то вроде следующего - один из способов сделать это. Вам нужно будет использовать 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();
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...