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);