Wenn ich einen String habe, gibt es eine eingebaute Funktion zum Sortieren der Zeichen oder müsste ich meine eigene schreiben?
zum Beispiel:
string word = "dabc";
Ich würde es so ändern wollen, dass:
string sortedWord = "abcd";
Vielleicht ist die Verwendung von char eine bessere Option? Wie würde ich das in C ++ machen?
std::sort
?Antworten:
In der Standardbibliothek im Header befindet sich ein Sortieralgorithmus
<algorithm>
. Es wird an Ort und Stelle sortiert. Wenn Sie also Folgendes tun, wird Ihr ursprüngliches Wort sortiert.std::sort(word.begin(), word.end());
Wenn Sie das Original nicht verlieren möchten, erstellen Sie zuerst eine Kopie.
std::string sortedWord = word; std::sort(sortedWord.begin(), sortedWord.end());
quelle
std::sort
sortiert standardmäßig in alphabetisch aufsteigender Reihenfolge. Das ist ein kleiner Tippfehler Gesetzt und Sie wollen de Um Knittern, verwenden Sie die Version ,std::sort
dass ein nimmtCompare
als drittes Argument und liefernstd::greater
anstelle des Standardstd::less
.std::string
verwendetchar
standardmäßig den Typ, z. B.std::sort(sortedWord.begin(), sortedWord.end(), std::greater<char>());
- das würde ein Ergebnis von "dcba" in der ursprünglichen Frage anstelle von "abcd" ergeben.std::sort(str.begin(), str.end());
Siehe hier
quelle
Sie müssen eine
sort
Funktion in diealgorithm
Header-Datei aufnehmen, die eine Standardvorlagenbibliothek in C ++ ist.Verwendung : std :: sort (str.begin (), str.end ());
#include <iostream> #include <algorithm> // this header is required for std::sort to work int main() { std::string s = "dacb"; std::sort(s.begin(), s.end()); std::cout << s << std::endl; return 0; }
AUSGABE:
quelle
Sie können die Funktion sort () verwenden. sort () existiert in der Algorithmus- Header-Datei
#include<bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); string str = "sharlock"; sort(str.begin(), str.end()); cout<<str<<endl; return 0; }
Ausgabe:
quelle