Jeśli mam ciąg znaków, czy istnieje wbudowana funkcja do sortowania znaków, czy też musiałbym pisać własne?
na przykład:
string word = "dabc";
Chciałbym to zmienić tak, aby:
string sortedWord = "abcd";
Może użycie znaku jest lepszą opcją? Jak mam to zrobić w C ++?
std::sort
?Odpowiedzi:
W standardowej bibliotece w nagłówku znajduje się algorytm sortowania
<algorithm>
. Sortuje w miejscu, więc jeśli wykonasz następujące czynności, oryginalne słowo zostanie posortowane.std::sort(word.begin(), word.end());
Jeśli nie chcesz zgubić oryginału, najpierw wykonaj kopię.
std::string sortedWord = word; std::sort(sortedWord.begin(), sortedWord.end());
źródło
std::sort
sortuje w kolejności alfabetycznej. Przypuśćmy, że to drobna literówka i chcesz de kolejność fałdowanie używać wersjastd::sort
, która trwaCompare
jako trzeci argument i dostarczamystd::greater
zamiast domyślnegostd::less
.std::string
używa tegochar
typu domyślnie, więc np.std::sort(sortedWord.begin(), sortedWord.end(), std::greater<char>());
- to dałoby wynik „dcba” w oryginalnym pytaniu zamiast „abcd”.std::sort(str.begin(), str.end());
Zobacz tutaj
źródło
Musisz dołączyć
sort
funkcję, która znajduje się walgorithm
pliku nagłówkowym, który jest standardową biblioteką szablonów w C ++.Sposób użycia : 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; }
WYNIK:
źródło
Możesz użyć funkcji sort () . sort () istnieje w pliku nagłówkowym algorytmu
#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; }
Wynik:
źródło