[C++] Sortowanie danych algorytmem stable_sort 
Ostatnio zmodyfikowano 2015-05-19 19:27
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. #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?  | 
 | 
notabigthreat  | 
» 2015-05-19 18:46:25 Chyba na razie sortujesz tylko po rozmiarze?  | 
 | 
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.  | 
 | 
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 sort( tekst.begin(), tekst.end(),[]( const string & a, const string & b ) { return a.size() < b.size() || a.size() == b.size() && a < b; } );
   | 
 | 
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?  | 
 | 
|  « 1 »  |