Về cơ bản tôi muốn tìm kiếm giá trị nhỏ nhất (dương) từ một loạt các giá trị và cần một giá trị mặc định để so sánh với giá trị đầu tiên. Giả định ngây thơ sẽ là, họ luôn luôn so sánh "ít hơn" (trừ NaN, nhưng chúng ta không xem xét những người) nhưng tôi không khá chắc chắn.Làm thế nào để các giá trị dấu phẩy động tùy ý so sánh với vô cực?
Tôi đang sử dụng loại float
và tôi nghĩ rằng nó có thể được giả định một cách an toàn rằng phần cứng đích của tôi thực hiện một giá trị vô hạn.
Dưới đây là một số mã ví dụ:
auto leastValue = std::numeric_limits<float>::infinity();
for (auto i = something.begin(), e = something.end(); i != e; ++i)
{
auto value = (*i)->GetValue();
if (value < leastValue)
{
leastValue = value;
}
}
Bạn cũng có thể chỉ sử dụng giá trị đầu tiên làm giá trị ban đầu của mình. Nó rất có thể sẽ vẫn hoạt động nếu bạn đặt vào vô cùng; Tôi chỉ chỉ ra rằng bạn không thực sự * cần * để sử dụng một giá trị sinh dục đặc biệt. –
Với việc kéo 'i' ra khỏi vòng lặp và thêm một kiểm tra bổ sung cho một bộ sưu tập trống, tôi có thể. Nhưng sẽ không làm cho câu hỏi vô dụng? ;) – kiw
Sử dụng 'std :: min_element' và để nó lo lắng về những thứ như thế? –