Câu trả lời này thực sự phụ thuộc vào người sẽ sử dụng mã của bạn và tiêu chuẩn họ muốn xem.
size_t là một kích thước nguyên với mục đích:
Kiểu size_tnày là một kiểu số nguyên không dấu được xác định do triển khai đủ lớn để chứa kích thước tính theo byte của bất kỳ đối tượng nào. (Đặc tả C ++ 11 18.2.6)
Vì vậy, bất cứ lúc nào bạn muốn làm việc với kích thước của các đối tượng tính bằng byte, bạn nên sử dụng size_t. Bây giờ, trong nhiều trường hợp, bạn không sử dụng các thứ nguyên / chỉ mục này để đếm byte, nhưng hầu hết các nhà phát triển chọn sử dụng size_tở đó để thống nhất.
Lưu ý rằng bạn phải luôn luôn sử dụng size_tnếu lớp của bạn dự định có giao diện của lớp STL. Tất cả các lớp STL trong đặc tả sử dụng size_t. Nó có giá trị cho các trình biên dịch để typedef size_tđược unsigned int, và nó cũng có giá trị cho nó được typedefed tới unsigned long. Nếu bạn sử dụng inthoặc longtrực tiếp, cuối cùng bạn sẽ chạy vào trình biên dịch nơi một người nghĩ rằng lớp của bạn theo phong cách của STL bị mắc kẹt vì bạn không tuân theo tiêu chuẩn.
Đối với việc sử dụng các loại đã ký, có một vài lợi thế:
- Tên ngắn hơn - mọi người thực sự dễ dàng nhập
int, nhưng khó khăn hơn nhiều để làm lộn xộn mã unsigned int.
- Một số nguyên cho mỗi kích thước - Chỉ có một số nguyên 32 bit tuân thủ CLS, đó là Int32. Trong C ++, có hai (
int32_tvà uint32_t). Điều này có thể làm cho khả năng tương tác API đơn giản hơn
Nhược điểm lớn của các loại đã ký là một điều hiển nhiên: bạn mất một nửa tên miền. Một số đã ký không thể được tính cao bằng số không dấu. Khi C / C ++ xuất hiện, điều này rất quan trọng. Một thứ cần thiết để có thể giải quyết toàn bộ khả năng của bộ xử lý và để làm được điều đó bạn cần sử dụng các số không dấu.
Đối với các loại ứng dụng .NET được nhắm mục tiêu, không có nhu cầu về chỉ mục không dấu tên miền đầy đủ. Nhiều mục đích cho những con số như vậy đơn giản là không hợp lệ trong một ngôn ngữ được quản lý (tập hợp bộ nhớ đến trong tâm trí). Ngoài ra, khi .NET ra đời, máy tính 64 bit rõ ràng là tương lai. Chúng ta còn lâu mới cần đến toàn bộ số nguyên 64 bit, nên hy sinh một bit không còn đau đớn như trước. Nếu bạn thực sự cần 4 tỷ chỉ mục, bạn chỉ cần chuyển sang sử dụng số nguyên 64 bit. Tệ nhất, bạn chạy nó trên máy 32 bit và hơi chậm.
Tôi xem thương mại là một trong những tiện lợi. Nếu bạn tình cờ có đủ sức mạnh tính toán mà bạn không ngại lãng phí một chút loại chỉ mục mà bạn sẽ không bao giờ sử dụng, thì thật tiện lợi khi chỉ cần gõ inthoặc longbỏ đi. Nếu bạn thấy bạn thực sự muốn chút cuối cùng đó, thì có lẽ bạn nên chú ý đến chữ ký của các số của bạn.
-1được trả về từ các hàm trả về một chỉ mục, để chỉ ra "không tìm thấy" hoặc "ngoài phạm vi". Nó cũng được trả về từ cácCompare()chức năng (thực hiệnIComparable). Một int 32 bit được coi là đi để gõ cho một số chung, vì những gì tôi hy vọng là lý do rõ ràng.