试图使用重载C++的运算符按字母顺序对图书向量进行排序
Trying to sort a vector of Books alphabetically using operator overloading C++
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编译。
相关文章:
- 从数组中删除非唯一值、保持顺序和不使用向量的最佳方法?
- 按类成员的顺序对包含类对象的C++向量进行排序
- C++ 按数值对元组<字符串、浮点数>然后按字典顺序排序的向量
- 删除C++中向量中第一个最小的数字(并保持顺序)
- 在 C++98/03 中以相反的顺序将 C 数组附加到向量,而无需 for 循环
- C 在向量的向量中按字母顺序排序字符串
- 如何将int分解为数字并以相同的顺序为向量分配数字
- 带有矢量切片的矢量指针,用于从预序和顺序向量生成树
- 如何以相反的顺序将整个向量复制到队列中
- Rcpp:按另一个向量的顺序重新排列一个向量
- 如何将整数向量转换为 2 位十六进制并按顺序添加到 c 字符串?
- 如何使用 std::shuffle 以随机顺序对具有唯一指针的向量进行洗牌
- 使用多个线程的并行向量乘法比顺序乘法需要更长的时间
- C++ 向量::clear() - 销毁顺序
- 如何按顺序删除向量中的重复值
- 字母顺序的C 排序向量
- 如何按C 中的向量对升序和下降顺序进行排序
- 如何通过私有字符串变量按字母顺序对对象向量进行排序
- 在 c++ 中给出两个整数向量(大小和类型相同),我想从最小到最大元素对一个进行排序,并更改第二个向量的顺序
- 试图使用重载C++的运算符按字母顺序对图书向量进行排序