Boost został niedawno udostępniony w projekcie, nad którym pracuję, i nie mam z nim dużego doświadczenia. Biblioteka ma tak wiele części i funkcji, że trudno jest wiedzieć, od czego zacząć ją uczyć - zwłaszcza, że będę się jej uczył podczas tworzenia kodu produkcyjnego (więc nie może mnie to zbytnio spowolnić).
Byłbym bardzo wdzięczny, gdyby ktoś mógł wymienić około 3 do 5 funkcji, które są ogólnie bardzo przydatne, codzienne programowanie i wskazać, dlaczego są one przydatne. Potem mogę zacząć się uczyć i korzystać z nich - przynajmniej zapewni mi to przyczółek w bibliotece i przyjazne miejsce do rozpoczęcia nauki / stosowania :)
Z góry dziękuję!
Odpowiedzi:
Jeśli używasz kompilatora wcześniejszego niż TR1, wówczas inteligentne wskaźniki
Jeśli twój kompilator ma już inteligentne wskaźniki, użyj ich.
Powodem jest oczywiste, że C ++ bez inteligentnych wskaźników w zasadzie nie jest C ++
Biblioteki boost ptr_contaier.
Wszystkie kontenery STL zostały zaimplementowane specjalnie do przechowywania wskaźników. Pojemniki nie tylko przejmują na własność wskaźniki, więc gdy pojemnik zostanie zniszczony, automatycznie niszczy wszystkie wskaźniki. ALE zapewnia również dostęp do elementów jako normalne odwołania do obiektów (nie wskaźników), dzięki czemu można łatwo używać obiektów w standardowych algorytmach bez funktorów opakowujących.
Biblioteki doładowania lambda. (patrz komentarz poniżej)
Funktory i spoiwa STL są odpowiednie dla prostych rzeczy. Ale boost :: lambda podjęło ten krok i znacznie upraszcza korzystanie ze standardowych algorytmów.
boost :: any i boost :: variant
Kiedy musisz trzymać przedmioty, nie chcąc znać ich dokładnego typu.
Pojemniki wieloindeksowe
Kontenery, które umożliwiają wiele różnych sposobów dostępu do elementów.
Dawno minęły czasy, kiedy masz wektor obiektów i oddzielną mapę do szybkiego wyszukiwania wektora. Zmniejsza to płytę grzewczą, którą musisz napisać, aby zachować dwa pojemniki podczas wkładania / usuwania elementów do pojemników.
boost :: lexical_cast
Prawdopodobnie najmniej przydatna w prawdziwym życiu, ale świetną zabawą jest doładowanie :: lexical_cast. Konwertuje dowolny obiekt na ciąg znaków (o ile w tym typie zdefiniowano odpowiednie operatory << i >>). Bardzo przydatne do odrzucania komunikatów o błędach podczas usuwania błędów.
źródło
Boost nie jest ramą ani biblioteką. Jest to kontrolowana pod względem jakości, recenzowana kolekcja bibliotek. Nie uczysz się wzmocnienia. Biblioteki są indywidualne - kiedy czegoś potrzebujesz, sprawdzasz, czy jest w trybie Boost, a jeśli tak, to uczysz się tej biblioteki. Otóż to. Nie można uzyskać pojęcia o podwyższeniu :: opcjonalnie od uzyskania pojęcia o podwyższeniu :: wariancie.
źródło
Boost to kolekcje bibliotek. Następnym razem, gdy zrobisz kata kodu, wybierz bibliotekę w Boost, która Twoim zdaniem może ci pomóc i użyj jej. Dokumentacja jest bardzo dobra i nie powinieneś mieć problemów z wybieraniem prostych zastosowań. Bardziej złożone pojawią się, gdy spróbujesz robić bardziej sprytne rzeczy.
Przykład: bezpieczny wątek singleton z boost :: thread call_once.
Przykład: przeczytaj plik konfiguracyjny klucz: wartość za pomocą tokenizera.
źródło