2011-01-13 75 views
35

thể trùng lặp:
Boost LibrarySử dụng thư viện tăng C++?

Thường khi tôi đã cố gắng (và thất bại) C++ Dự án Tôi chạy vào Boost khi duyệt web. Tôi đã thử đọc trang web Boost, nhưng không có mô tả ngắn gọn lý do tại sao để sử dụng Boost và chính xác nó là gì.

Một trong những điều tôi thích rất nhiều về Python là mọi thứ được tích hợp sẵn và đa nền tảng, yêu cầu web, email, XML, JSON, v.v. Đây có phải là trường hợp với Boost không?

Vì vậy, đủ cường điệu, câu hỏi câu trả lời-thể bê tông của tôi:

  • gì chính xác là Tăng?
  • Lý do nhập khẩu nhiều nhất để sử dụng Boost là gì?
  • Thiết bị có hoàn toàn đa nền tảng không?
  • Có an toàn hơn không, sau đó mã nhà thông thường, nơi bạn nhanh chóng bỏ qua một lần tràn bộ đệm, v.v ...?
  • Có bất kỳ liên kết nào đến một trang mô tả tất cả các mô hình Tăng trong một hoặc hai câu không?
+0

Xem thêm http://stackoverflow.com/q/125580/50079. – Jon

+7

Để trả lời câu hỏi không ai trả lời, các thư viện tăng không làm cùng loại hạt và bu lông những thứ thực tế mà các thư viện Python thực hiện. Không có XML, không JSON, không có email, không xử lý HTTP. Các thư viện tăng cường đều trừu tượng hơn và mức độ thấp hơn. Vẫn cực kỳ hữu ích cho tất cả điều đó, nhưng một loại khác nhau hữu ích. – Omnifarious

+0

@Omnifarious: Cảm ơn, đó là một trong những phần quan trọng nhất trong câu hỏi của tôi. – orlp

Trả lời

43

Boost chính xác là gì?

Boost là tập hợp các thư viện hữu ích và chất lượng cao cho C++ bổ sung cho thư viện chuẩn khá nhỏ.

Lý do nhập nhiều nhất để sử dụng Boost là gì?

Boost cung cấp các công cụ chất lượng cao bị thiếu trong C++. Việc sử dụng chúng rất đa dạng mặc dù vậy Boost có dành cho bạn hay không tùy thuộc hoàn toàn vào nhu cầu của bạn. Nhưng tôi có thể nói rằng mỗi cơ sở mã C++ đủ lớn sẽ được hưởng lợi từ việc sử dụng Boost.

Một số linh kiện linh hoạt nhất là shared_ptr (con trỏ thông minh đếm tham chiếu giúp ngăn chặn rò rỉ bộ nhớ trong mã giàu con trỏ), array cung cấp một trình bao bọc rất tiện lợi xung quanh các mảng kiểu C có kích thước cố định và nhỏ khác các bit lẻ đã được tích hợp vào tiêu chuẩn C++ tiếp theo.

Nền tảng có hoàn toàn không?

Hầu như luôn có. Đây là một trong những phẩm chất chính của Boost.

Có bất kỳ liên kết nào đến trang mô tả tất cả các mô-đun Tăng trong một hoặc hai câu không?

There is indeed.

+5

Chỉ cần sử dụng 'boost :: shared_ptr' hoặc' boost :: scoped_ptr' trong mã của bạn và không bao giờ viết 'delete' nữa là một lý do chính đáng đủ để sử dụng boost. –

3

Tăng là tập hợp các lớp và những thứ khác cho C++ bị thiếu trong STL. Rất nhiều các thư viện trong Boost đang được đưa vào tiêu chuẩn C++ mới. Nó chắc chắn an toàn hơn nhiều so với những gì bạn có thể nghĩ ra vì mã này được sử dụng rộng rãi và được xem xét ngang hàng. Nền tảng đa nền tảng thông thường của nó, nhưng có thể có một số gotchas.

Đối với những gì có trong thúc đẩy, hãy kiểm tra này: http://www.boost.org/doc/libs/1_45_0/?view=categorized

2

Bất cứ điều gì mà boost page trên wikipedia không trả lời?

+0

Với tôi, mục đích của Stack Overflow không chỉ là trả lời các câu hỏi. Đó cũng là vấn đề thu thập và chia sẻ kiến ​​thức. Theo tôi, loại câu trả lời này không mang lại giá trị nào cho cộng đồng. – auserdude

+0

@auserdude Đồng ý! Đăng một số trang web khác mà không giải thích kiến ​​thức tự ngâm mình không được phép trong SO. –

9

gì chính xác là Tăng?

Tăng là tập hợp các thư viện C++ giúp bạn tránh viết mã tùy chỉnh để giải quyết các sự cố thường gặp.

Lý do quan trọng nhất để sử dụng Boost là gì?

Tăng cường giúp bạn không phải thiết kế, triển khai và kiểm tra các giải pháp mà nó cung cấp. Điều này giúp bạn tiết kiệm rất nhiều thời gian và giúp bạn tránh các lỗi trên đường đi.

Nền tảng có hoàn toàn không?

Tăng cường hỗ trợ nhiều nền tảng, đôi khi các giải pháp phục vụ hiệu quả trên các nền tảng cụ thể. Bạn có thể thấy các nền tảng mà nó đã được kiểm tra, gần cuối phiên bản hiện tại page trong tiêu đề Trình biên dịch được kiểm tra.

là nó nhiều hơn "an toàn" sau đó thường xuyên đang home-brew nơi bạn nhanh chóng bỏ qua rằng một tràn đệm, vv?

Có, trừ khi bạn có nhiều thời gian để kiểm tra mã của mình. Boost bao gồm một bộ thử nghiệm tự động và được thử nghiệm bởi hàng trăm nghìn nếu không phải hàng triệu nhà phát triển thông qua việc sử dụng hàng ngày. Nó cũng có rất nhiều tài liệu giúp bạn phát triển với các thư viện mà nó bao gồm. Boost không chỉ an toàn hơn so với hầu hết các mã sản xuất tại nhà, mà nói chung, nó còn hiệu quả hơn.

Có bất kỳ liên kết nào đến trang mô tả tất cả các mô-đun Tăng cường trong một hoặc hai câu không?

Trang liên kết Boost Library Documentation cung cấp tóm tắt một câu của tất cả các thư viện trong Boost.

9

1) Boost là tập hợp các API, được phát triển bởi một số trong những tư duy tốt nhất trong C++. Bạn có thể sử dụng bao nhiêu hoặc ít tùy thích. Mỗi mục tiêu API và giải quyết một mô hình cụ thể. Ví dụ:

lexical_cast<> - Type-safe ways of casting from one type to another. 
program_options - Library for parsing command lines in a type-safe manner 
asio   - Asynchronous Input/Output. Great for working with sockets, IP4/IP6 
shared_ptr  - Reference-counted smart pointer 

... và nhiều hơn nữa.

2) Một trong những lý do quan trọng nhất để sử dụng Boost là các nhà phát triển tuyệt vời đã thực hiện việc này, có, thực hiện tốt nó. Các giải pháp này được đánh giá ngang hàng và mạnh mẽ. Nếu bạn có một vấn đề để giải quyết và tăng cường có một API phù hợp với hóa đơn, rất có thể là bạn nên sử dụng nó.

3) Đó là về nền tảng chéo như bạn sắp nhận được. vâng, vâng.

4) Tôi sẽ sử dụng tăng cường đối với mã do nhà sản xuất. Homebrew có xu hướng được sử dụng bởi một nhà phát triển duy nhất (người đã mã hóa nó). Boost đang được sử dụng trong các ứng dụng thương mại ở khắp mọi nơi và như tôi đã nói trước đó, nó được xem xét ngang hàng. Bạn không nhận được nhiều hơn nữa mạnh mẽ hơn thế.

5) Trang tăng cường chính có danh sách các thư viện theo chức năng và theo thứ tự bảng chữ cái.

+0

Nó phải có nghĩa là không, ví dụ: – nonremovable

+0

@nonremovable, cảm ơn! Đã chỉnh sửa. –

+0

Đã được 'c + 11' std :: _ shared_ptr' lấy từ tăng 'shared_ptr', đúng không? Sau đó chúng tương đối giống nhau, hmm? –

3

BOOST là một bộ sưu tập các thư viện điền nhu cầu chung cho nhiều dự án C++. Nói chung, họ ưu tiên tính chính xác, khả năng sử dụng lại, tính di động, hiệu suất thời gian chạy và hiệu quả không gian so với khả năng đọc mã thực thi BOOST hoặc đôi khi biên dịch. Chúng có xu hướng không bao gồm các yêu cầu chức năng cấp cao hoàn chỉnh (ví dụ: các khung ứng dụng), và thay vào đó (may mắn) cung cấp các khối xây dựng có thể được kết hợp tự do hơn mà không cần đọc hoặc thống trị thiết kế ứng dụng.

Những lý do quan trọng để xem xét sử dụng BOOST bao gồm:

  • nhất thư viện được khá tốt thử nghiệm và thiết kế: họ thường nhận được bình luận âm thanh hợp lý bởi một số lập trình viên xuất sắc, so với của người dân với các giải pháp home-brew trong không gian cùng một vấn đề, và sử dụng rộng rãi đủ để thu thập thông tin phản hồi rộng thực tế
  • nó đã được viết và giải pháp của bạn có thể không phải là
  • nó khá cầm tay (nhưng điều đó khác nhau tùy theo thư viện) hơn
  • người ở cộng đồng C++ sẽ có một khởi đầu giúp bạn với mã của bạn
  • BOOST thường là nền tảng để giới thiệu về tiêu chuẩn C++, vì vậy bạn sẽ có ít việc phải làm để viết lại mã của mình tương thích với các tiêu chuẩn tương lai sans BOOST
  • do nhu cầu của cộng đồng, các nhà cung cấp trình biên dịch có nhiều khả năng để kiểm tra và phản ứng với các vấn đề về tính đúng đắn với việc sử dụng BOOST

các thư viện được mô tả trong một hoặc hai dòng ở đây: http://www.boost.org/doc/libs/.

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