2017-08-25 16 views
14

vector<int> có cả hai vector<int>::size_typevector<int>::difference_type. Có vẻ như không cần thiết cho cả hai tồn tại kể từ khi size_type được đảm bảo có thể giữ một giá trị lớn như số lượng tối đa các phần tử vector<int> có thể chứa trên một hệ thống nhất định và trong mọi trường hợp sử dụng hợp lệ, difference_type hoặc bằng số lượng phần tử tối đa tức là khoảng cách giữa hai phần tử trong vùng chứa tuần tự sẽ không bao giờ lớn hơn số lượng tối đa các phần tử mà vùng chứa tuần tự có thể chứa. Ai đó có thể cung cấp một ví dụ mà có một sự khác biệt hữu ích giữa hai?Tại sao các vùng chứa tuần tự có cả size_type và differ_type?

+0

Có hai loại khác nhau cho 'kích thước' và' chênh lệch' được một số nhầm lẫn trong thiết kế ban đầu của STL. Vì vậy, không đưa vào mặc dù nhiều về nó. Xem ví dụ. https://www.youtube.com/watch?v=wvtFGa6XJDU – alfC

Trả lời

27

container::difference_type tồn tại vì đối với một số vùng chứa trình tự, bạn có thể trừ các trình vòng lặp. Phép trừ đó có thể dẫn đến một số âm. Bạn không thể sử dụng container::size_type cho kết quả đó vì nó chưa được ký, do đó bạn sẽ không bao giờ có giá trị âm. Vì vậy, chúng tôi có container::difference_type là số nguyên đã ký là số difference_type của trình lặp của vùng chứa.

+0

Ý nghĩa của "trừ vòng lặp" là gì? Khi nào nó là một hoạt động có ý nghĩa? – Dai

+1

@Dai Để tìm khoảng cách giữa hai phần tử trong một thùng chứa? – Tas

Các vấn đề liên quan