Di mana harus mulai belajar menggunakan perpustakaan Boost?

16

Baru-baru ini Boost tersedia di proyek tempat saya bekerja, dan saya tidak punya banyak pengalaman dengannya. Perpustakaan memiliki begitu banyak bagian dan fitur sehingga sulit untuk mengetahui di mana harus mulai mempelajarinya - terutama karena saya akan mencoba mempelajarinya saat membuat kode produksi (sehingga tidak dapat memperlambat saya terlalu banyak).

Saya akan sangat menghargai jika seseorang dapat mendaftar sekitar 3 hingga 5 fitur yang sangat berguna secara umum, pemrograman setiap hari dan menyatakan mengapa mereka berguna. Maka saya bisa mulai mempelajari dan menggunakannya - setidaknya akan memberi saya pijakan di perpustakaan dan tempat yang ramah untuk mulai mempelajarinya / menerapkannya :)

Terima kasih sebelumnya!

John Humphreys - w00te
sumber
Saya tidak mengerti ungkapan 'pijakan di perpustakaan' dalam konteks ini. Ada apa dengan buku? Ada beberapa hal tentang vendor dari yang biasa, memilikinya di rak buku tim Anda harus menjadi suatu keharusan.
aquaherd
Saya membaca semua waktu untuk pemrograman - Saya tidak punya waktu untuk membaca buku atau panduan referensi untuk mendorong kembali ke depan untuk mengetahui semua yang dimilikinya dan apakah itu berguna saat ini. Saya ingin mulai menggunakannya di sana-sini dan perlahan-lahan mengambilnya saat bekerja, dan saya ingin beberapa contoh inti komponen penambah yang sangat berguna. Sebagai contoh, Efektif C ++ oleh Scott Meyers berbicara tentang shared_ptr tanpa henti (dan sangat sedikit yang lain) karena sangat bagus. Apa lagi yang sangat membantu dalam meningkatkan?
John Humphreys - w00te
Saya pribadi sangat menyukai makro BOOST_FOREACH, pola pengamat / pelanggan, ekspresi reguler, parser tanggal / waktu (sisi), tapi saya kebetulan menjumpai mereka secara kebetulan saat memodifikasi dorongan yang ada menggunakan kode atau seperti yang diuraikan DeadMG. Saya hanya menggores ujung gunung es yang meningkatkan, tetapi rasanya seperti kelanjutan alami dari STL.
aquaherd

Jawaban:

8

Jika Anda menggunakan kompiler pra TR1 maka pointer pintar

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

boost::scoped_array
boost::shared_array

Jika kompiler Anda sudah memiliki pointer pintar, gunakan saja.
Alasannya jelas C ++ tanpa smart pointer pada dasarnya bukan C ++

Meningkatkan ptr_contaier libraries.

Semua kontainer STL diimplementasikan kembali secara khusus untuk memegang pointer. Kontainer tidak hanya mengambil kepemilikan pointer sehingga ketika kontainer dihancurkan secara otomatis menghancurkan semua pointer. TETAPI juga menyediakan akses ke elemen sebagai referensi objek normal (bukan pointer) ini membuatnya mudah untuk menggunakan objek dalam algoritma standar tanpa fungsi pembungkus.

Meningkatkan perpustakaan lambda. (lihat komentar di bawah)

Fungsi dan pengikat STL OK untuk hal-hal sederhana. Tapi boost :: lambda mengambil langkah berikutnya dan membuat segalanya lebih sederhana ketika menggunakan algoritma standar.

boost :: any dan boost :: varian

Ketika Anda perlu memegang benda tanpa ingin tahu jenisnya yang tepat.

Wadah multi indeks

Wadah yang memungkinkan berbagai cara berbeda untuk mengakses elemen.
Lewatlah sudah hari-hari ketika Anda memiliki vektor objek dan peta terpisah untuk vektor pencarian cepat. Ini mengurangi pelat ketel yang harus Anda tulis untuk mempertahankan kedua wadah saat memasukkan / menghapus elemen ke dalam wadah.

boost :: lexical_cast

Mungkin yang paling tidak berguna dalam kehidupan nyata tetapi banyak kesenangan untuk dimainkan adalah boost :: lexical_cast. Itu mengkonversi objek apa pun ke / dari string (selama jenis itu memiliki << dan >> operator yang tepat ditentukan). Sangat berguna untuk membuang pesan kesalahan saat menghapus bug.

Martin York
sumber
1
Boost.Phoenix telah resmi menggantikan Boost.Lambda, yang sekarang dianggap usang. Harap rekomendasikan yang pertama daripada yang terakhir untuk kode baru. : -]
ildjarn
16

Boost bukan kerangka kerja, atau perpustakaan. Ini adalah koleksi perpustakaan yang dikontrol kualitasnya dan ditinjau oleh rekan sejawat. Anda tidak belajar Meningkatkan. Perpustakaan bersifat individual - ketika Anda membutuhkan sesuatu, Anda memeriksa untuk melihat apakah ada dalam Meningkatkan, jika itu, maka Anda mempelajari perpustakaan itu. Itu dia. Anda tidak bisa memahami peningkatan :: opsional dari mendapatkan pemahaman tentang peningkatan :: varian.

DeadMG
sumber
4
Anda bisa mengatakan bahwa boost adalah label kualitas dan set distribusi.
Klaim
1

Boost adalah koleksi perpustakaan. Lain kali Anda melakukan kata kode, pilih perpustakaan di Boost yang menurut Anda dapat membantu Anda dan menggunakannya. Dokumentasinya sangat bagus dan Anda seharusnya tidak memiliki masalah dalam mengambil penggunaan sederhana. Yang lebih kompleks akan datang ketika Anda mencoba melakukan hal-hal yang lebih pintar.

Contoh: singleton safe thread dengan boost :: thread call_once.

Contoh: membaca file konfigurasi kunci: nilai menggunakan tokenizer.

Sardathrion - Pasang kembali Monica
sumber