Tôi thực sự ngạc nhiên khi thấy rằng std::count
đã trả về một iterator_traits<InputIterator>::difference_type
, lần lượt đề cập đến một long int
trên nền tảng của tôi.Tại sao std :: count trả về một số nguyên đã ký?
Tại sao lại như vậy? Một phần tử đếm âm trong một vùng chứa không có ý nghĩa gì cả.
Sự khác biệt sẽ chỉ âm nếu phạm vi không hợp lệ và điều này mang lại hành vi không xác định trong thuật toán. –
Thảo luận này có thể hữu ích: http://stackoverflow.com/questions/7505083/why-does-the-c-standard-algorithm-count-return-a-ptrdiff-t-instead-of-size-t?answertab = active # tab-top – Jordan
@ChristianIvicevic, tôi bối rối. Có phải hành vi không xác định hay không? Tôi có nghĩa là, hoặc ranh giới iterators được kiểm tra và nó trả về một giá trị tiêu cực về lỗi, hoặc nó là hành vi không xác định và sau đó những gì nó trả về là không xác định. – qdii