为什么tha std :: list ::排序不起作用

Why is it tha std::list::sort does not work?

本文关键字:排序 不起作用 list 为什么 std tha      更新时间:2023-10-16

我有一个 list<int>,带有内容 3,2,1

在列表中调用std::list::sort()后,整数内容的顺序不会更改。为什么这样?

#include <list>
int main()
{
    std::list<int> list, list1;
    list.push_back(1);
    list.push_back(2);
    list.push_back(3);
    list1.push_back(3);
    list1.push_back(2);
    list1.push_back(1);
    list1.sort();
    return list == list1;
}

在我的代码中,我一直变得错误,为什么?

我使用Visual Studio IntelliSense在呼叫sort()函数之前和之后查看了列表的内容,我观察到排序顺序没有变化,因此证明了相等性测试的结果。

从视觉观察中,使用IntelliSense,有理由相信排序功能不起作用。

我将数据结构更改为向量,以便我有

class Greaterthan : std::binary_function<int,int,bool> 
{
public:
    result_type operator()(first_argument_type first,second_argument_type second)
    {
        return (result_type)(first < second);
    }
}

然后,我将代码重新编写为

#include <vector>
int main()
{
    std::vector<int> list, list1;
    list.push_back(1);
    list.push_back(2);
    list.push_back(3);
    list1.push_back(3);
    list1.push_back(2);
    list1.push_back(1);
    list1.sort(Greaterthan());
    return list == list1;
}

但是,同样的事情也发生了。为什么?

,所以当您有类似的东西时:

std::list<int> l;
l.push_back(4);
l.push_back(2);
l.push_back(1);
l.sort();

列表看起来像:[1,2,4]

您应该为我们提供您的代码,以获取一个更详细的问题的答案