Bắt đầu học sử dụng thư viện Boost ở đâu?


16

Boost gần đây đã có sẵn trong dự án mà tôi đang làm việc và tôi không có nhiều kinh nghiệm với nó. Thư viện có rất nhiều phần và tính năng mà thật khó để biết bắt đầu học nó ở đâu - đặc biệt là vì tôi sẽ cố gắng học nó trong khi tạo mã sản xuất (vì vậy nó không thể làm tôi chậm lại quá nhiều).

Tôi sẽ đánh giá rất cao nếu ai đó có thể liệt kê khoảng 3 đến 5 tính năng rất hữu ích nói chung, lập trình hàng ngày và nêu rõ lý do tại sao chúng hữu ích. Sau đó, tôi có thể bắt đầu học những thứ đó và sử dụng chúng - ít nhất nó sẽ giúp tôi có chỗ đứng trong thư viện và một nơi thân thiện để bắt đầu học / áp dụng nó :)

Cảm ơn trước!


Tôi không hiểu cụm từ 'chỗ đứng trong thư viện' trong bối cảnh này. Có chuyện gì với sách vậy? Có một vài chủ đề từ các nhà cung cấp thông thường, có chúng trên kệ sách của đội bạn là điều bắt buộc.
thủy thủ

Tôi đọc tất cả thời gian để lập trình - Tôi không có thời gian để đọc một cuốn sách hoặc hướng dẫn tham khảo về việc quay trở lại phía trước để biết mọi thứ nó có và có hữu ích hay không ngay lúc này. Tôi muốn bắt đầu sử dụng nó ở đây và ở đó và từ từ nhặt nó lên trong khi làm việc, và tôi muốn một vài ví dụ cốt lõi của các thành phần tăng cường thực sự hữu ích. Ví dụ, C ++ hiệu quả của Scott Meyers nói về shared_ptr không ngừng (và rất ít) vì nó rất tốt. Những gì khác là hữu ích bất thường trong tăng?
John Humphreys - w00te

Cá nhân tôi rất thích các macro BOOST_FOREACH, các mẫu quan sát / thuê bao, các biểu thức chính quy, các trình phân tích ngày / giờ (các khía cạnh), nhưng tôi đã gặp chúng một cách tình cờ trong khi sửa đổi tăng cường hiện có bằng cách sử dụng mã hoặc như DeadMG đã phác thảo. Tôi mới chỉ gãi phần nổi của tảng băng đang tăng, nhưng nó có cảm giác như một sự tiếp nối tự nhiên của STL.
thủy sinh

Câu trả lời:


8

Nếu bạn đang sử dụng trình biên dịch TR1 trước thì con trỏ thông minh

boost::shared_ptr
boost::weak_ptr
boost::scoped_ptr 

boost::scoped_array
boost::shared_array

Nếu trình biên dịch của bạn đã có con trỏ thông minh, hãy sử dụng chúng.
Lý do rõ ràng là C ++ không có con trỏ thông minh về cơ bản không phải là C ++

Các thư viện ptr_contaier tăng.

Tất cả các container STL được triển khai lại cụ thể để giữ con trỏ. Các container không chỉ sở hữu các con trỏ để khi container bị phá hủy, nó sẽ tự động phá hủy tất cả các con trỏ. NHƯNG nó cũng cung cấp quyền truy cập vào các phần tử như các tham chiếu đối tượng bình thường (không phải con trỏ), điều này giúp bạn dễ dàng sử dụng các đối tượng trong các thuật toán tiêu chuẩn mà không cần hàm functor.

Các thư viện lambda tăng. (xem bình luận bên dưới)

Các functor và chất kết dính STL là OK cho những điều đơn giản. Nhưng boost :: lambda đã thực hiện bước tiếp theo và làm cho mọi thứ đơn giản hơn rất nhiều khi sử dụng các thuật toán tiêu chuẩn.

boost :: any và boost :: biến thể

Khi bạn cần giữ đồ vật mà không muốn biết loại chính xác của chúng.

container đa chỉ số

Các thùng chứa cho phép nhiều cách khác nhau để truy cập các yếu tố.
Đã qua rồi những ngày bạn có một vectơ các đối tượng và một bản đồ riêng cho vectơ tìm kiếm nhanh. Điều này cắt giảm phần soạn sẵn mà bạn cần viết để duy trì hai thùng chứa khi chèn / xóa các phần tử vào các thùng chứa.

boost :: lexical_cast

Có lẽ ít hữu ích nhất trong cuộc sống thực nhưng có rất nhiều điều thú vị để chơi là boost :: lexical_cast. Nó chuyển đổi bất kỳ đối tượng nào thành / từ một chuỗi (miễn là loại đó có các toán tử << và >> thích hợp được xác định). Rất hữu ích để đổ thông báo lỗi khi gỡ lỗi.


1
Boost.Phoenix đã chính thức thay thế Boost.Lambda, hiện được coi là không dùng nữa. Vui lòng giới thiệu cái trước hơn là cái sau cho mã mới. : -]
ildjarn

16

Boost không phải là một khung, cũng không phải là một thư viện. Nó là một bộ sưu tập thư viện được kiểm soát chất lượng, được đánh giá ngang hàng. Bạn không học Boost. Các thư viện là riêng lẻ - khi bạn cần một cái gì đó, bạn kiểm tra xem nó có trong Boost không, nếu có, thì bạn học thư viện đó. Đó là nó. Bạn không thể nắm bắt được boost :: tùy chọn từ việc nắm bắt về biến thể boost ::.


4
Bạn có thể nói rằng boost là nhãn chất lượng và bộ phân phối.
Klaim

1

Boost là một bộ sưu tập các thư viện. Lần tới khi bạn thực hiện mã kata, hãy chọn một thư viện trong Boost mà bạn nghĩ có thể giúp bạn và sử dụng nó. Các tài liệu rất tốt và bạn không nên gặp khó khăn khi chọn các công dụng đơn giản. Những điều phức tạp hơn sẽ đến khi bạn cố gắng làm những điều thông minh hơn.

Ví dụ: một luồng đơn an toàn cho chủ đề với boost :: thread call_once.

Ví dụ: đọc tệp cấu hình của khóa: giá trị bằng cách sử dụng mã thông báo.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.