试图使用重载C++的运算符按字母顺序对图书向量进行排序

Trying to sort a vector of Books alphabetically using operator overloading C++

本文关键字:顺序 向量 排序 重载 C++ 运算符      更新时间:2023-10-16

Hi已经做了一些研究,但没有找到做到这一点的方法。我有一个矢量的LibraryBooks

vector <LibraryBook> l;

我正试着按字母顺序把书分类,但不知道该怎么做。类LibraryBook由以下部分组成:

string author;
string title;
string numPages;

我想按书名排序,如果它们是一样的,我想按作者排序。我也有一些过载的运营商,我需要使用:

    bool Book::operator< (const LibraryBook &b1) const
{
   return author < b1.getAuthor(); 
}
    bool Book::operator> (const LibraryBook &b1) const
{
   return author > b1.getAuthor(); 
}

为你能提供的任何帮助欢呼!

您可以使用此比较器方法:

bool Book::operator< (const Book &rhs) const
{
   return std::tie(title, author) < std::tie(rhs.title, rhs.author);
}

然后简单地进行

std::vector <LibraryBook> l;
// ...
std::sort(l.begin(), l.end());

您也可以使用此方法:

std::sort(v.begin(), v.end(), [ ](Book &a, Book &b) { 
        return  (a.title == b.title) ? a.auther < b.auther : a.title < b.title ;
        });

用CCD_ 1编译。