Dove iniziare a imparare a utilizzare le librerie Boost?

16

Boost è recentemente diventato disponibile sul progetto su cui sto lavorando, e non ho molta esperienza con esso. La libreria ha così tante parti e caratteristiche che è difficile sapere da dove cominciare imparandolo - specialmente visto che cercherò di impararlo mentre faccio il codice di produzione (quindi non può rallentare troppo).

Apprezzerei molto il fatto che qualcuno potesse elencare da 3 a 5 funzioni che sono molto utili in generale, programmazione quotidiana e indicano perché sono utili. Poi posso iniziare a imparare quelli e usarli - mi darà almeno un punto d'appoggio in biblioteca e un posto amichevole per iniziare ad impararlo / applicarlo:)

Grazie in anticipo!

    
posta John Humphreys - w00te 05.10.2011 - 00:18
fonte

3 risposte

8

Se stai utilizzando un compilatore pre TR1, allora i puntatori intelligenti

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

boost::scoped_array
boost::shared_array

Se il tuo compilatore ha già dei puntatori intelligenti, usali.
Il motivo è ovvio che il C ++ senza puntatori intelligenti non è fondamentalmente C ++

Le librerie boost ptr_contaier.

Tutti i contenitori STL re-implementati specificamente per contenere puntatori. Non solo i contenitori prendono la proprietà dei puntatori in modo che quando il contenitore viene distrutto, esso automaticamente distrugga tutti i puntatori. MA fornisce anche accessi agli elementi come normali riferimenti agli oggetti (non puntatori), questo rende facile l'uso degli oggetti negli algoritmi standard senza i funtori wrapper.

Le librerie lambda di potenziamento. (vedi commento sotto)

I funtori e i legatori STL sono OK per cose semplici. Ma boost :: lambda ha fatto il passo successivo e rende le cose molto più semplici usando gli algoritmi standard.

boost :: any e boost :: variant

Quando è necessario tenere oggetti senza voler conoscere il loro esatto tipo.

Multi Index Containers

Contenitori che consentono più modi diversi per accedere agli elementi.
Sono finiti i giorni in cui hai un vettore di oggetti e una mappa separata per il vettore di ricerca rapida. Questo riduce il boilerplate che è necessario scrivere per mantenere i due contenitori quando si inseriscono / eliminano elementi nei contenitori.

boost :: lexical_cast

Probabilmente il meno utile nella vita reale ma molto divertente da giocare è boost :: lexical_cast. Converte qualsiasi oggetto in / da una stringa (purché tale tipo abbia gli operatori appropriati < < e > > definiti). Molto utile per scaricare i messaggi di errore durante il de-bugging.

    
risposta data 05.10.2011 - 02:11
fonte
16

Boost non è un framework, né una libreria. Si tratta di una raccolta di librerie a controllo paritario controllata dalla qualità. Non impari Spinta. Le librerie sono individuali: quando hai bisogno di qualcosa, controlli se è in Boost, se lo è, allora impari quella libreria. Questo è tutto. Non puoi afferrare boost: opzionale da ottenere su boost :: variant.

    
risposta data 05.10.2011 - 00:25
fonte
1

Boost è una raccolta di librerie. La prossima volta che esegui un codice kata, scegli una libreria in Boost che pensi possa aiutarti e usarla. La documentazione è molto buona e non dovresti avere problemi nel trovare semplici utilizzi. Quelli più complessi verranno quando proverai a fare cose più intelligenti.

Esempio: un singleton thread-safe con boost :: thread call_once.

Esempio: legge un file di configurazione della chiave: valore usando tokenizer.

    
risposta data 05.10.2011 - 09:15
fonte

Leggi altre domande sui tag