2012-05-14 22 views
10

Tôi đang tìm một lớp BigInt tốt và cơ bản trong C++, tôi tìm thấy nhiều triển khai nhưng phần lớn thời gian, việc triển khai phức tạp cho thư viện crypto ...Việc triển khai tốt và cơ bản của lớp BigInt trong C++

Bởi cơ bản, tôi có nghĩa là BigInt có thể xử lý BigInt, dài và các chuỗi với quá tải toán tử. Nếu tôi có thời gian, tôi đã tự làm nhưng tôi không có thời gian để tạo ra cả lớp BigInt.

+3

Tôi nghĩ GMP có trình bao bọc lớp học phải không? –

+0

@ SethCarnegie: Có nhưng GMP là C. (Tôi muốn một cái gì đó trong C++ hiện đại, người sử dụng quá tải nhà điều hành) – Bebeoix

+0

Một wrapper_ _class nhất thiết phải có trong C + + vì C không có các lớp. –

Trả lời

5

Here's one. Tôi đã không sử dụng nó, nhưng nó không quá phức tạp, và nó là kết quả đầu tiên khi tôi googled "bigint c + +".

+0

Thỏa thuận thư viện với nhiều loại khác với BigInteger như BigUnsigned và BigUnsignedInABase, không dễ dàng như vậy so với chỉ một lớp BigInt. – Bebeoix

+0

Nếu bạn không muốn BigUnsignedInABase, bạn được tự do không sử dụng nó. Cá nhân, tôi không nghĩ rằng bạn sẽ tìm thấy bất cứ điều gì đơn giản hơn. Hoặc là lấy đi hoặc là bỏ lại. –

+0

Tôi đã tự hỏi về điều gì đó cơ bản hơn/dễ dàng hơn nhiều. – Bebeoix

17

Thư viện đơn giản nhất mà tôi biết là InfInt. Nó chỉ bao gồm một tệp tiêu đề. Cách sử dụng của nó khá đơn giản. Đây là mã mẫu:

InfInt myint1 = "15432154865413186646848435184100510168404641560358"; 
InfInt myint2 = 156341300544608LL; 

myint1 *= --myint2 - 3; 
std::cout << myint1 << std::endl; 
+0

Đây là liên kết được cập nhật cho [InfInt github] (https://github.com/sercantutar/infint). Đây là liên kết tải xuống vĩnh viễn dành cho [InfInt.h] (https://web.archive.org/web/20170509111229/https://raw.githubusercontent.com/sercantutar/infint/master/InfInt.h) – Hydranix

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