O Boost tornou-se disponível recentemente no projeto em que estou trabalhando e não tenho muita experiência com ele. A biblioteca possui tantas partes e recursos que é difícil saber por onde começar a aprendê-la - especialmente porque tentarei aprender enquanto cria o código de produção (para que não possa me atrapalhar muito).
Eu apreciaria muito se alguém pudesse listar entre 3 e 5 recursos que são muito úteis em geral, programação diária e indicar por que eles são úteis. Então eu posso começar a aprender e usá-los - pelo menos me dará uma posição na biblioteca e um lugar amigável para começar a aprendê-lo / aplicá-lo :)
Desde já, obrigado!
Respostas:
Se você estiver usando um compilador pré-TR1, ponteiros inteligentes
Se o seu compilador já tiver ponteiros inteligentes, use-os.
O motivo é óbvio que o C ++ sem ponteiros inteligentes não é basicamente o C ++
As bibliotecas boost ptr_contaier.
Todos os contêineres da STL foram reimplementados especificamente para conter ponteiros. Os contêineres não são apenas proprietários dos ponteiros, de modo que, quando o contêiner é destruído, ele destrói automaticamente todos os ponteiros. MAS também fornece acessos a elementos como referências normais a objetos (não ponteiros), facilitando o uso dos objetos em algoritmos padrão, sem a função de wrapper.
As bibliotecas lambda boost. (veja o comentário abaixo)
Os functores e ligantes STL são bons para coisas simples. Mas o boost :: lambda deu o próximo passo e simplificou bastante as coisas ao usar os algoritmos padrão.
boost :: any e boost :: variant
Quando você precisa segurar objetos sem querer saber seu tipo exato.
Multi Contentores
Contêineres que permitem várias maneiras diferentes de acessar os elementos.
Longe vão os dias em que você tem um vetor de objetos e um mapa separado para um vetor de pesquisa rápida. Isso reduz o padrão que você precisa escrever para manter os dois contêineres ao inserir / excluir elementos nos contêineres.
boost :: lexical_cast
Provavelmente o menos útil na vida real, mas muito divertido de brincar é o boost :: lexical_cast. Ele converte qualquer objeto em / de uma string (desde que esse tipo tenha os operadores << e >> apropriados definidos). Muito útil para despejar mensagens de erro ao remover erros.
fonte
O impulso não é uma estrutura, nem uma biblioteca. É uma coleção de bibliotecas com controle de qualidade e revisão por pares. Você não aprende Boost. As bibliotecas são individuais - quando você precisa de algo, verifica se está no Boost, se estiver, e aprende essa biblioteca. É isso aí. Você não pode entender o boost :: opcional de entender o boost :: variant.
fonte
Boost é uma coleção de bibliotecas. Da próxima vez que você fizer um kata de código, escolha uma biblioteca no Boost que ache que pode ajudá-lo e use-a. A documentação é muito boa e você não deve ter problemas em escolher usos simples. Os mais complexos surgirão quando você tentar fazer coisas mais inteligentes.
Exemplo: um singleton seguro de thread com boost :: thread call_once.
Exemplo: leia um arquivo de configuração da chave: value usando o tokenizer.
fonte