std::sort für nummerische Strings



  • Ich habe für meine Anwendung einen vector<string>, welcher neben alphanummerischen Einträgen auch rein nummerische Strings enthält.

    Dieser vector wird per STL Sort sortiert und aufsteigender Reihenfolge.

    Das Problem ist, dass nummerische Strings dann wie folgt sortiert werden:

    10, 11, 12, 2, 3, 4, 41, 42, 43, ...

    ich brauch dagegen einen Vector der folgende Reihenfolge hat:

    2, 3, 4, 10, 11, 12, 41, 42, 43, ...

    Auf integer beschränken geht nicht, da die Bedingung ist, dass auch normale Strings als Element vorkommen können.

    Ich habe schon über eine Kriterien - Funktion versucht, die Entscheidung durch vergleich über eine Umwandlung nach Integer zu erzwingen. Geht aber nicht...

    Danke für Hilfe!



  • Vorschlag:
    2 -> 02
    3 -> 03

    an sonsten gehts halt nicht anders als den Algo selbst zu schreiben. Ein normaler Bucketsort (denke der ist implementiert weil der fuer Strings ziemlich effektiv ist) sortiert halt die Praefixe (und "2" ist ein Praefix von "23") vor die ganzen Strings, sonst haettest du ja auch
    A, B, Affe, Blumen, Blumenkohl, Affenkaefig
    und das ist irgendwie eine komische Sortierung.



  • noname schrieb:

    Auf integer beschränken geht nicht, da die Bedingung ist, dass auch normale Strings als Element vorkommen können.

    Und wie sortierst du die? Liegt 2X2 vor 44 oder dahinter?


Anmelden zum Antworten