私は "アルゴリズム第4版"(Sedgewick、ウェイン)を読んでいると、3ウェイパーティションクイックソートのために、それは、このC#のコードを使用していますこれと同等のコードがC++で何になるのでしょうか。 ありがとうございます。C#comparetTo()関数の同等
答えて
int cmp = a < b ? -1 : a > b ? 1 : 0;
または
int cmp = a < b ? -1 : a == b ? 0 : 1;
のいくつかの変異体は、特定のタイプのために理にかなっているものをオペレータに依存します。
さらにMSDNCompareTo
の実装上の制約を定義:
、以下が真でなければならない:
A.CompareTo(A)ゼロを返さなければなりません。
A.CompareTo(B)がゼロを返す場合、B.CompareTo(A)はゼロを返す必要があります。
A.CompareTo(B)の場合にはゼロを返し、B.CompareTo(C)をA.CompareTo(C)がゼロを返す必要があり、ゼロを返します。 A.CompareTo(B)は反対の符号の値を返す必要がゼロ以外の値、その後B.CompareTo(A)を返した場合
。
A.CompareTo(B)の値がゼロに等しくないxは戻り、B.CompareTo(C)はxと同じ符号の値yを返し、次いでA.CompareTo(C)が同じの値を返す必要がある場合xとyとして符号を付ける。
STLはすでにこのために 'std :: greater'関数オブジェクトを持っています –
@PanagiotisKanavos' std :: greater'は正確には 'CompareTo 'それは平等のためにテストしないので、答え(驚き)だけがもう一方より大きいかどうかです。しかし、これはC++でソートするのが望ましい方法だとは言いません。 – Rotem
ソートのために、それが使用されています。 C++には既に、比較関数オブジェクトを期待する 'std :: sort'のようなアルゴリズムがあります。 C#と同等の機能はC++では役に立ちません。 PS:Therer's [std :: greater_equal](http://en.cppreference.com/w/cpp/utility/functional/greater_equal) –
同等物は、std::greader関数オブジェクトの特殊化です。
がstd::sort例から撮影:
std::array<int, 10> s = {5, 7, 4, 2, 8, 6, 1, 9, 0, 3};
// sort using a standard library compare function object
std::sort(s.begin(), s.end(), std::greater<int>());
for (auto a : s) {
std::cout << a << " ";
}
std::cout << '\n';
他の組み込み関数オブジェクト、例えばstd::greater_equal、std::lessとstd::less_equalがあります。特定の順序付けを使用する新しい比較オブジェクトを作成することもできます。
あなたはSTLとアルゴリズムのC++本を読んだりする必要があり、C#のコードを適応しようとしません。 std::sort
のようなC++アルゴリズムは、任意のコンテナまたはストリーム(実際にはイテレータを提供できるもの)で動作する特定のクラス/関数です。あなたがそれからbegin
とend
イテレータを得ることができれば、ツリーをソートすることができます。
STL自体またはブースト
- 1. C#と同等のPHP mysql_real_escape_string関数
- 2. Pythonと同等で同等の関数
- 3. C#の同等
- 4. 同等のC#
- 5. PHP imagettftext()C++/Java/Pythonの同等の関数
- 6. PerlのJavaで同等のパック関数
- 7. JavaのC# "静的変数"と同等
- 8. .NET同等のMFC関数SetModifiedFlag
- 9. Pythonのperl vec()関数と同等
- 10. MATLAB psf2otf関数と同等のPython
- 11. 肘方法のSklearn関数kmeans同等
- 12. _mm_タイプ関数の等価Cコード
- 13. PHPのBASE64_DECODE C#の同等
- 14. Objective-Cの同等コード
- 15. テンプレートパラメータのC#void同等
- 16. C#のshell_execと同等
- 17. Objective-C++と同等の__OBJC__
- 18. C#で同等のCFile。
- 19. JGroups同等のライブラリ(C++)
- 20. tailqとC++の同等語
- 21. C#TrimEnd()と同等のJavaScript
- 22. Union Struct C# - 同等か等しいか?
- 23. C++関数の同等のバイトを取得して実行する
- 24. 関数のオーバーロードを使用してC++で整数を持つchar同等関数を呼び出す
- 25. どのようにmsdnのC++関数の同等のデルファイ関数を見つけるのですか?
- 26. )私は(同等の機能getc関数を機能たくストリームC++
- 27. Sscanf Objective-Cと同等
- 28. C#adodbレコードセットと同等
- 29. Objective-C + =同等ですか?
- 30. 他の同等の機能を扱う等しい変換関数を
のような人気のライブラリあなたはSTLとアルゴリズムにC++の本を読むべきで、C#コードを適応しようとしないパーティショニングなど、ソートのためのアルゴリズムであり構築されています。 C++ *アルゴリズム*は、任意のコンテナまたはストリーム(実際にはイテレータを提供できるもの)で動作する特定のクラス/関数です。 STL自体にソート、パーティショニングなどのためのアルゴリズムが組み込まれています –
これらのアルゴリズムは、さまざまな種類の特定の動作を提供する「特性」を受け入れることができます。 [std :: sort](http://en.cppreference.com/w/cpp/algorithm/sort)を確認します。3番目のオーバーロードは 'std :: greater()'のような比較関数またはオブジェクトを受け取ります –