Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Sortowanie danych algorytmem stable_sort

Ostatnio zmodyfikowano 2015-05-19 19:27
Autor Wiadomość
KiddingMe
Temat założony przez niniejszego użytkownika
[C++] Sortowanie danych algorytmem stable_sort
» 2015-05-19 18:21:07
Staram się użyć wspomnianego algorytmu tak, by otrzymać wektor posortowany według długości stringu, a jednocześnie stringi z identyczną długością mają być posortowane alfabetycznie.
C/C++
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;

int main() {
    vector < string > tekst { "caa", "c", "dddd", "eeeee", "eeeea", "ggggggg", "a", "bb", "cc", "dd", "aa", "ab" };
   
    stable_sort( tekst.begin(), tekst.end(),[]( const string & a, const string & b ) { return a.size() < b.size(); } );
   
    for( auto i = tekst.begin(); i != tekst.end(); ++i ) {
        cout <<* i << "|";
    }
   
    return 0;
}

Wyświetla mi wynik:
c|a|bb|cc|dd|aa|ab|caa|dddd|eeeee|eeeea|ggggggg|

Jeśli dobrze myślę, to wynik powinien być(taki chcę osiągnąć):
a|c|aa|ab|bb|cc|dd|caa|dddd|eeeea|eeeee|ggggggg|

Wytłumaczy mi ktoś, co robię źle?
P-132511
notabigthreat
» 2015-05-19 18:46:25
Chyba na razie sortujesz tylko po rozmiarze?
P-132514
KiddingMe
Temat założony przez niniejszego użytkownika
» 2015-05-19 19:10:02
Poprawny wynik udaje się uzyskać dodając linijkę sort(tekst.begin(),tekst.end()); przed stable_sort. Czy Stable_sort powinien wykonać to sam - alfabetycznie z uwzględnieniem rozmiarów stringów? Po to dostaje tą lambde jako trzeci argument.
P-132518
Monika90
» 2015-05-19 19:20:35
Staram się użyć wspomnianego algorytmu tak, by otrzymać wektor posortowany według długości stringu, a jednocześnie stringi z identyczną długością mają być posortowane alfabetycznie.
Do tego nie potrzeba stable_sort, wystarczy
C/C++
sort( tekst.begin(), tekst.end(),[]( const string & a, const string & b )
{ return a.size() < b.size() || a.size() == b.size() && a < b; } );
P-132519
KiddingMe
Temat założony przez niniejszego użytkownika
» 2015-05-19 19:27:02
Tak, jest to rozwiązanie problemu. Chcę jednak zrozumieć stable_sort, dlatego o niego pytam. Może ktoś sprawdzić wypociny z pierwszego postu, czy też otrzymuje takie wyniki?
P-132520
« 1 »
  Strona 1 z 1