[解決済み] max templateの実装に「a < b ? b : a」ではなく「b < a ? a : b」を使用するのはなぜですか?
2022-04-26 08:48:26
質問
C++テンプレート -完全ガイド 第2版 が紹介されています。 マックス テンプレートがあります。
template<typename T>
T max (T a, T b)
{
// if b < a then yield a else yield b
return b < a ? a : b;
}
を使うことが説明されています。
“b < a ? a : b”
の代わりに
“a < b ? b : a”
:
StepanovNotes]によるmax()テンプレートに注意してください。 a < b ? b : a "の代わりに "b < a ? a : b "を意図的に返すようにしています。 この関数は、2つの値が同じであっても正しく動作します。 は等しいが、等しくない。
"をどう理解するか。
even if the two values are equivalent but not equal.
とは?
“a < b ? b : a”
は、私の場合、同じ結果になるようです。
解決方法は?
std::max(a, b)
を返すように指定されているのは確かです。
a
が等価であるとき。
では間違いとされています。
ステパノフ
という便利な特性を壊してしまうからです。
a
と
b
を使えば、いつでも並べ替えが可能です。
{min(a, b), max(a, b)}
そのためには
max(a, b)
を返すように
b
は、引数が等価である場合に
関連
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] 仮想デストラクタはいつ使うのか?
-
[解決済み] template "と "typename "キーワードはどこに、なぜ入れなければならないのですか?
-
[解決済み】テンプレートの引数として渡される関数
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み】デバッグアサーションに失敗しました