2016-11-23 87 views
-5

我有一個list<int>的內容3,2,1爲什麼它是std :: list :: sort不起作用?

在列表上調用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()函數之前和之後查看了列表的內容,並且我觀察到排序順序沒有變化,從而驗證了相等性測試的結果。

從視覺觀察,使用智能感知,有理由相信排序功能不起作用。

我改變了數據結構到載體中,使我不得不

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

但是,同樣的事情發生。爲什麼?

+3

'錯誤:缺少源代碼' –

+1

誰知道?我們無法讀懂頭腦。具體一點。發佈您的代碼。 – silentboy

+4

42行,有語法錯誤。 –

回答

-2

所以當你有這樣的事情:

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

名單看​​起來像:[1,2,4]

你應該向我們提供您的代碼來得到一個答案是比較詳細爲您的問題

相關問題