C++ 如何对类内的数组值进行排序
我想按升序对输入进行排序。但它似乎只是对整数进行排序。。我将排序方法基于气泡排序。。对不起,我的帖子太乱了。。我在这里的第一篇帖子:( 我希望输出为:C++ 如何对类内的数组值进行排序,c++,C++,我想按升序对输入进行排序。但它似乎只是对整数进行排序。。我将排序方法基于气泡排序。。对不起,我的帖子太乱了。。我在这里的第一篇帖子:( 我希望输出为: You have entered these movies: a(2001) f(2005) d(2011) 你应该比较电影的年份,但要替换整个元素,而不仅仅是它们的标题,如下所示: d = films[n]; films[n] = films[y]; films[y]= d; 对数组进行排序的更有效
You have entered these movies:
a(2001)
f(2005)
d(2011)
你应该比较电影的年份,但要替换整个元素,而不仅仅是它们的标题,如下所示:
d = films[n];
films[n] = films[y];
films[y]= d;
对数组进行排序的更有效或更干净的方法是将运算符<添加到结构中,然后使用std::sort进行排序。这也可以解决排序函数的问题
struct movies_t{
string title;
int year;
bool operator<(const movies_t& rhs) const
{
if (year < rhs.year)
return true;
if (year > rhs.year)
return false;
return title < rhs.title;
}
}films[3];
struct电影{
字符串标题;
国际年;
bool操作员(右年份)
返回false;
返回标题
将排序代码替换为:
#include <algorithm>
std::sort(films, films + n);
#包括
标准::排序(胶片,胶片+n);
这个答案打破了头衔和年份之间的关系
struct movies_t{
string title;
int year;
bool operator<(const movies_t& rhs) const
{
if (year < rhs.year)
return true;
if (year > rhs.year)
return false;
return title < rhs.title;
}
}films[3];
#include <algorithm>
std::sort(films, films + n);