文字列がある場合、文字を並べ替えるための組み込み関数がありますか、それとも自分で作成する必要がありますか?
例えば:
string word = "dabc";
次のように変更したいと思います。
string sortedWord = "abcd";
たぶんcharを使用する方が良いオプションですか?C ++でこれを行うにはどうすればよいですか?
文字列がある場合、文字を並べ替えるための組み込み関数がありますか、それとも自分で作成する必要がありますか?
例えば:
string word = "dabc";
次のように変更したいと思います。
string sortedWord = "abcd";
たぶんcharを使用する方が良いオプションですか?C ++でこれを行うにはどうすればよいですか?
回答:
標準ライブラリのヘッダーにソートアルゴリズムがあり<algorithm>
ます。インプレースで並べ替えられるため、次のようにすると、元の単語が並べ替えられます。
std::sort(word.begin(), word.end());
オリジナルを失いたくない場合は、最初にコピーを作成してください。
std::string sortedWord = word;
std::sort(sortedWord.begin(), sortedWord.end());
std::sort
、デフォルトでアルファベットの昇順で並べ替えます。仮にそれがマイナーのタイプミスだとあなたが欲しいデ折り目順序を、バージョンの使用std::sort
とるCompare
3番目の引数と電源としてstd::greater
の代わりに、デフォルトをstd::less
。デフォルトで型をstd::string
使用するchar
ため、たとえばstd::sort(sortedWord.begin(), sortedWord.end(), std::greater<char>());
—元の質問では「abcd」ではなく「dcba」の結果が得られます。
std::sort(str.begin(), str.end());
こちらをご覧ください
C ++の標準テンプレートライブラリであるヘッダーファイルにあるsort
関数をインクルードする必要があります。algorithm
使用法: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;
}
出力:
abcd
std::sort
ですか?