Chuỗi đẳng cấp và hầu hết các thư viện khác loại có định nghĩa một số loại đồng. Những loại đồng làm cho nó có thể sử dụng những loại thư viện trong một tư thiết cách độc lập. Các loại size_type là một trong những loại đồng. Để sử dụng size_type xác định bởi chuỗi, chúng ta sử dụng toán tử để nói rằng tên size_type được định nghĩa trong lớp string. Mặc dù chúng ta không biết loại chính xác của chuỗi :: size_type, chúng tôi biết rằng đó là một loại không dấu (§ 2.1.1, p. 32) đủ lớn để giữ kích thước của bất kỳ chuỗi. Bất kỳ biến được sử dụng để lưu trữ các kết quả từ các hoạt động kích thước chuỗi nên là kiểu string :: size_type. Phải thừa nhận rằng, nó có thể mất đến gõ chuỗi :: size_type. Dưới sự mới tiêu chuẩn, chúng tôi có thể yêu cầu các trình biên dịch để cung cấp các loại thích hợp bằng cách sử dụng tự động hoặc decltype (. § 2.5.2, p 68): Bấm vào đây để xem hình ảnh mã auto len = line.size (); // Len có kiểu string :: size_type Bởi vì kích thước trả về một kiểu unsigned, nó là điều cần thiết để ghi nhớ rằng các biểu thức trộn ký và dữ liệu unsigned có thể có kết quả đáng ngạc nhiên (§ 2.1.2, p. 36). Ví dụ, nếu n là một int mà giữ một giá trị tiêu cực, sau đó s.size () <n sẽ gần như chắc chắn đánh giá là đúng sự thật. Nó mang đúng bởi vì các giá trị tiêu cực trong n sẽ chuyển đổi một giá trị unsigned lớn. Mẹo Bạn có thể tránh vấn đề do chuyển đổi giữa unsigned int và do không sử dụng ints trong các biểu thức sử dụng size ().
đang được dịch, vui lòng đợi..
