Boost kütüphanelerini kullanmayı öğrenmeye nereden başlamalı?


16

Boost, üzerinde çalıştığım projede kısa süre önce kullanıma sunuldu ve bu konuda fazla deneyimim yok. Kütüphane o kadar çok parçaya ve özelliğe sahip ki, onu öğrenmeye nereden başlayacağımı bilmek zor - özellikle de üretim kodu yaparken öğrenmeye çalışacağım için (bu yüzden beni çok yavaşlatamaz).

Birisi genel olarak çok yararlı olan 3 ila 5 özellik listeleyebiliyorsa, her gün programlama ve neden faydalı olduklarını belirtiyorsa çok memnun olurum. Sonra bunları öğrenmeye ve kullanmaya başlayabilirim - en azından bana kütüphanede bir dayanak ve öğrenmeye / uygulamaya başlamak için samimi bir yer verecek :)

Şimdiden teşekkürler!


Bu bağlamda 'kütüphanede yer' ifadesini anlamıyorum. Kitapların sorunu ne? Her zamanki satıcıların konuyla ilgili birkaç tane var, onları takım kitaplığınızda bulundurmak bir zorunluluk olmalı.
aquaherd

Programlama için her zaman okudum - Her şeyi ve bu dakikanın yararlı olup olmadığını bilmek için arkadan destekle ilgili bir kitap veya referans kılavuzu okumak için zamanım yok. Burada ve orada kullanmaya başlamak ve çalışırken yavaşça almak istiyorum ve gerçekten yararlı takviye bileşenlerinin birkaç temel örneğini istedim. Örneğin, Scott Meyers'dan Effective C ++, paylaşılan_ptr durmadan (ve çok az başka şeyden) bahsediyor çünkü çok iyi. Artırmada olağandışı başka neler yardımcı olabilir?
John Humphreys - w00te

Şahsen BOOST_FOREACH makrolarını, gözlemci / abone kalıplarını, düzenli ifadeleri, tarih / saat ayrıştırıcılarını (yönler) çok beğendim, ancak kod kullanarak mevcut güçlendirmeyi değiştirirken ya da DeadMG'nin belirttiği gibi şans eseri karşılaştım. Buzdağının sadece destek olan ucunu çizdim, ancak STL'nin doğal bir devamı gibi hissettim.
aquaherd

Yanıtlar:


8

TR1 öncesi bir derleyici kullanıyorsanız akıllı işaretçiler

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

boost::scoped_array
boost::shared_array

Derleyicinizde zaten akıllı işaretçiler varsa bunları kullanın.
Nedeni akıllı işaretçiler olmadan açık C ++ temelde C ++ değil

Boost ptr_contaier kütüphaneleri.

Tüm STL kapları, işaretçileri tutmak için özel olarak yeniden uygulandı. Konteynerler sadece işaretçilerin mülkiyetini almakla kalmaz, böylece konteyner imha edildiğinde otomatik olarak tüm işaretçileri yok eder. ANCAK , öğelere normal nesne referansları (işaretçiler değil) olarak erişim sağlar, bu da sarmalayıcı işlevi olmaksızın standart algoritmalarda nesneleri kullanmayı kolaylaştırır.

Destek lambda kütüphaneleri. (aşağıdaki yoruma bakın)

STL functorları ve bağlayıcıları basit şeyler için uygundur. Ancak boost :: lambda bir sonraki adımı attı ve standart algoritmaları kullanırken işleri daha basit hale getiriyor.

boost :: any ve boost :: varyant

Nesneleri tam tiplerini bilmek istemeden tutmanız gerektiğinde.

Çok İndeksli Konteynerler

Öğelere erişmek için birden fazla farklı yol sağlayan kapsayıcılar.
Gitti günler için bir nesne vektörü ve hızlı arama vektörü için ayrı bir harita. Bu, kaplara eleman eklerken / silerken iki kabı korumak için yazmanız gereken kazan plakasını keser.

boost :: lexical_cast

Muhtemelen gerçek hayatta en az kullanışlı ama oynamak için çok eğlenceli boost :: lexical_cast. Herhangi bir nesneyi bir dizeye / dizeden dönüştürür (bu tür uygun << ve >> işleçlerini tanımladığı sürece). Hata ayıklama sırasında hata mesajlarını boşaltmak için çok yararlıdır.


1
Boost.Phoenix resmi olarak artık kullanımdan kaldırıldığı kabul edilen Boost.Lambda'nın yerini aldı. Lütfen yeni kod için ikincisi yerine ilkini önerin. : -]
ildjarn

16

Boost bir çerçeve ya da kütüphane değildir. Kalite kontrollü, hakemli bir kütüphane koleksiyonudur. Boost öğrenmezsiniz. Kütüphaneler bireyseldir - bir şeye ihtiyacınız olduğunda, Boost'da olup olmadığını kontrol edersiniz, eğer öyleyse, o kütüphaneyi öğrenirsiniz. Bu kadar. Boost :: variant üzerinde kavramaktan isteğe bağlı olarak ::


4
Artışın bir kalite etiketi ve bir dağıtım seti olduğunu söyleyebilirsiniz.
Klaim

1

Boost bir kütüphane koleksiyonudur. Bir dahaki sefere kod kata yaptığınızda, Boost'ta size yardımcı olabileceğini düşündüğünüz bir kitaplık seçin ve kullanın. Dokümantasyon çok iyi ve basit kullanımları almakta hiç problem yaşamamalısınız. Daha zekice şeyler yapmaya çalıştığınızda daha karmaşık olanlar gelecek.

Örnek: boost :: thread call_once içeren güvenli bir thread.

Örnek: tokenizer kullanarak key: value yapılandırma dosyasını okuyun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.