为什么它是std :: list :: sort不起作用?

时间:2016-11-23 09:22:06

标签: c++ sorting

我的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;
}

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

1 个答案:

答案 0 :(得分:-2)

所以当你有这样的事情时:

ImageContext imageContext = new ImageContext();
List<String> languages = new ArrayList<>();
languages.add("pl");
imageContext.setLanguageHints(languages);
annotateImageRequest.setImageContext(imageContext);

列表如下:[1,2,4]

您应该向我们提供您的代码,以获得针对您的问题更详细的答案