Mẫu C++ - Hướng dẫn đầy đủ, Phiên bản 2giới thiệutối đabản mẫu:
mẫu
T tối đa (T a, T b)
{
// nếu b < a thì tạo ra a nếu không thì tạo ra b
trả về b < a ? a : b;
}
nó giải thích bằng cách sử dụng “b < a ? a : b”
thay vì “a < b ? b : a”
:
Lưu ý rằng mẫu max() theo [StepanovNotes] cố ý trả về “b < a ? a : b” thay vì “a < b ? b : a” để đảm bảo rằng hàm hoạt động chính xác ngay cả khi hai giá trị tương đương nhưng không bằng nhau.
Làm sao hiểu được"ngay cả khi hai giá trị tương đương nhưng không bằng nhau.
”? “a < b ? b : a”
Dường như có kết quả tương tự đối với tôi.
std::max(a, b)
thực sự được chỉ định để được trả về khi cả hai bằng nhau Một
。
Stepanov Nghĩ rằng đây là một lỗi và lỗi khác vì nó phá vỡ quy định Một
Và b
Những đặc tính hữu ích của bạn luôn có thể sử dụng {min(a, b), max(a, b)}
;Đối với điều này bạn mong muốn tối đa(a, b)
Trả về nếu tham số bằng nhau b
。
Tôi là một lập trình viên xuất sắc, rất giỏi!