2011-11-08 36 views
5

Tại sao STL không chứa loại dữ liệu số nguyên không bị chặn?Tại sao không có loại Integer chưa được kích hoạt?

Tôi cảm thấy đó là loại dữ liệu có mục đích tương tự như của một chuỗi.
Người lập trình sẽ không phải lo lắng về giá trị tràn và có thể làm việc với số lượng lớn hơn nhiều.

Vì vậy, tôi rất tò mò nếu có lý do cụ thể cho sự vắng mặt của nó.

Đây không phải là vấn đề về cách triển khai hoặc sử dụng thư viện từ thư viện của bên thứ ba, nhưng chỉ là một câu hỏi là tại sao ngôn ngữ chưa có ngôn ngữ. Bất kỳ liên kết nào về vấn đề này đều được đánh giá cao.

+2

Tôi đoán rằng số học lớn không phải là tầm thường để thực hiện (hiệu quả). – Mysticial

+2

"nhưng chỉ là một câu hỏi là tại sao ngôn ngữ không đi kèm với một ngôn ngữ." Tại sao nên làm thế? Mọi người đều có vấn đề vật nuôi nhỏ của riêng họ, nơi họ nghĩ rằng một số ngôn ngữ nên hỗ trợ X. Nhưng điều đó không có nghĩa là nó nên. Tôi đã lập trình được hơn 20 năm và tôi đã sử dụng chuỗi rất thường xuyên.Tuy nhiên, tôi đã _never_ cần một số nguyên chính xác tùy ý. Đó không phải là để nói rằng đó là một lý do không có. Nhưng nó cho thấy rằng có lẽ câu hỏi là tại sao _should_ thư viện chuẩn C++ có một số nguyên chính xác tùy ý, không phải vì sao nó không. –

Trả lời

3

Bạn có thể có nghĩa là arbitrary precision arithmetic hoặc số lớn.

Có lẽ nó không có trong C++ vì nó không liên quan đến đối tượng rộng. Rất có thể, hầu như mọi mã C++ không tầm thường sẽ sử dụng một phần của STL (std::ostream hoặc các bộ sưu tập như std::vector hoặc các loại như std::string).

Nhưng nhiều mã không cần số lớn.

Tương tự, giao diện đồ họa (như Qt) không phải là một phần của STL, vì cùng một lý do. Rất nhiều người không quan tâm đến những vấn đề này (ví dụ: trong mã máy chủ hoặc các ứng dụng số).

Và xác định thư viện chuẩn là một nỗ lực lớn. Theo tôi, C++ STL có lẽ đã quá lớn rồi; không cần phải thêm nhiều hơn nữa bên trong.

Bạn có thể muốn sử dụng GMP nếu cần.

1

Bởi vì ngay cả cách trở lại khi STL được thiết kế:

đã Có độc đoán tốt hơn đáng kể các thư viện chính xác số nguyên trong C. Chắc chắn họ không chính thức các lớp học, nhưng các cấu trúc họ đã sử dụng vẫn làm công việc. Việc triển khai STL sẽ không thực sự hấp thu nhiều từ những người cần số nguyên chính xác tùy ý, dẫn tôi đến lý do thứ hai của tôi:

Không nhiều người thực sự cần số nguyên chính xác tùy ý. Những người làm, kéo vào thư viện của bên thứ ba. Đối với hầu hết mọi người 32bit longs đã làm công việc trong những ngày đó. Đối với nhiều người, họ vẫn làm. Và hiệu suất là tốt hơn đáng kể. Ngay cả trên một hệ thống không có các hoạt động 64bit, bạn có thể mô phỏng chúng với một vài hướng dẫn và vẫn nhanh hơn đáng kể so với việc thực hiện số nguyên bất kỳ (dù bạn tạo ra bao nhiêu, phần tùy ý và phân bổ đống có khả năng sẽ làm cho nó thêm đắt hơn hai hoạt động số nguyên nhỏ hơn và mang theo thủ công).

Ngoài tất cả những gì nó chỉ đơn giản là đi xuống để Stroustrup đã không cảm thấy nó có đủ hấp dẫn để phù hợp với tầm nhìn của mình về STL.

Tôi nghĩ rằng một câu hỏi hay hơn sẽ là lý do tại sao không có loại tiền thập phân hoặc độ chính xác tùy ý trong STL, vì tôi nghĩ chúng thường là vấn đề, nhưng câu trả lời là như nhau.

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