文字列ベクトルのソート方法を知りたかったので、最小文字数の文字列がベクターの上にくるようにしました。たとえば、ベクトルにABCD、ABCDE、ABCがある場合ABCがトップに到達しました。私はsort_ifでどのように達成できるのか、述語はどのように見えるのでしょうか?任意の他の方法もある文字列サイズに基づいて文字列ベクトルをソートする
答えて
文字列(複数可)の大きさを比較するために、独自のカスタム数子を作成し、にそれを使用します文字列をソートします。
struct compare {
bool operator()(const std::string& first, const std::string& second) {
return first.size() < second.size();
}
};
std::vector<std::string> v;
compare c;
std::sort(v.begin(), v.end(), c);
文字列の長さが同じであれば、その文字列を辞書順に並べ替えることをお勧めします。関数呼び出し演算子はおそらく 'const'でなければなりません。 –
これを行うには、ファンクタを作成する必要はありません。単純な比較関数も同様に行います。 –
@DietmarKühl私はあなたがちょうど同じ長さであれば安定したいと思うだろう。それは尋ねる人のことだと思います。 – BoBTFish
は定期的std::sort(first, last, compare)
を使用することができるはず歓迎し、このように機能を比較します
bool compareLen(const std::string& a, const std::string& b)
{
return (a.size() < b.size());
}
std::sort
あなただけの長さに基づいて比較する関数を定義することができますカスタム比較
template< class RandomIt, class Compare >
void sort(RandomIt first, RandomIt last, Compare comp);
のためのオプションの引数を取ります。
- 1. 文字列に基づいて文字列を分割する
- 2. C++のソート文字列ベクトル
- 3. 文字に基づいて文字列を分解する
- 4. キーワードに基づいて文字列をソートして大文字小文字を作成する
- 5. 数値に基づいて混合文字列のリストをソート
- 6. ターゲット文字列との違いに基づいて文字列のリストをソートする最良の方法は?
- 7. は、クエリ文字列に基づいて
- 8. (文字列の)リストに基づいて列を整列する
- 9. 文字列のサイズに基づいて範囲内のセルを整列する
- 10. 文字列ビルダーの文字列を文字列ビルダーの長さに基づいて追加する
- 11. 文字列の長さに基づいて文字列を切り取る
- 12. 文字列の一部に基づいて文字列のベクトルを並べ替えます(RIGHT)。
- 13. 固定文字に基づいて文字列から文字をプル
- 14. 文字列値に基づいてJava文字列をトリミングしますか?
- 15. 挿入ソートを文字列ベクトルで
- 16. ユニークな部分文字列に基づくペア文字列
- 17. 文字列に基づいて文字列のリストからサブリストを作成
- 18. 文字列に基づいてベクトルをサブセット化する方法は?
- 19. ソート文字列
- 20. Java文字列を区切り文字に基づいて2つの文字列に分割します。
- 21. 文字数に基づいてPHPの文字列を解析する
- 22. Bashの特定の文字に基づいて文字列を調整する
- 23. 特定の文字に基づいて文字列を取得する機能
- 24. Swiftの文字に基づいて文字列をハッシュする方法は?
- 25. 文字列内の文字に基づいて文字列を並べ替える
- 26. VBAは、文字書式に基づいて文字列内の文字列を検索します
- 27. ASP.Net VBの文字列で使用される文字列に基づいた文字列
- 28. サイズのPHPに基づいて文字列をトリミングする方法
- 29. パンダの列と文字列に基づいて数えて
- 30. Excelマクロ文字列に基づいて列を非表示
これは 'std :: sort_if()'ではありません。しかし、 'std :: sort()'の述語には過度の負担がかかります。述語は明らかに引数の長さを比較し、等しい場合は文字列の辞書順と比較します。それ以外の場合は、最初の引数が短い場合は 'true'を返します。 –
FYI - これらの回答は古くなりました。過負荷のオペレータは必要ありません。単にラムダを使用してください! –