std :: lists mit std :: sort [duplizieren]

8

Meine Frage ist, können wir zwei std :: lists mit std :: sort function sortieren? Ich habe 2 String-Listen

%Vor%

Während ich diese Listen sortiere, erhalte ich Fehler. Ich versuchte mit std :: vector, zu dieser Zeit funktioniert die Sortierung.

Der Fehler ist wie

  

C: \ Programme (x86) \ Microsoft Visual Studio 10.0 \ VC \ include \ xutility (1158):         siehe Deklaration von 'std :: operator -'         1 & gt; C: \ Programme (x86) \ Microsoft Visual Studio 10.0 \ VC \ include \ Algorithmus (3642):         Fehler C2784: '_Base1 :: Unterschiedstyp Std :: Operator -         (const std :: _ Revranit & lt; _RanIt, _Base & gt; & amp; Const std :: _ Revranit & lt; _RanIt2, _Base2 & gt; & amp;):         konnte das Template-Argument für 'const std :: _ Revranit & lt; _RanIt, _Base & gt; &Ampere;'         von 'std :: _ List_iterator & lt; _Mylist & gt;'           1 & gt; mit           1 & gt; [           1 & gt; _Mylist = Std :: _ List_val & gt;           1 & gt; ]

Ich muss wissen, dass nur std :: sort Listen unterstützt?

    
Aneesh Narayanan 18.05.2012, 12:28
quelle

2 Antworten

37

Sie können std::sort nicht zum Sortieren von std::list verwenden, da std::sort erfordert, dass Iteratoren wahlfrei sind und std::list Iteratoren nur bidirektional sind.

Allerdings hat std::list eine Memberfunktion sort , die es sortiert:

%Vor%     
Fanael 18.05.2012, 12:30
quelle
7

Sie sollten list::sort verwenden, das möglicherweise einen anderen Algorithmus verwendet. std::sort erfordert Direktzugriffs-Iteratoren (unterstützt Sprünge beliebiger Größe), während Listen-Iteratoren nur jeweils um eine Verbindung vorwärts oder rückwärts gehen können.

Siehe C ++ 11 25.4.1.1:

%Vor%

und 23.3.5.5/27 (Mitglieder von std::list ):

%Vor%     
Potatoswatter 18.05.2012 12:30
quelle

Tags und Links