Wiecej niz C++ Wprowadzenie do bibliotek Boost.pdf

(352 KB) Pobierz
Więcej niż C++. Wprowadzenie do bibliotek Boost
IDZ DO
PRZYK£ADOW Y ROZDZIA£
Wiêcej ni¿ C++.
Wprowadzenie do
bibliotek Boost
SPIS TREŒCI
KATALOG KSI¥¯EK
Autor: Björn Karlsson
T³umaczenie: Przemys³aw Szeremiota
ISBN: 83-246-0339-5
An Introduction to Boost
Format: B5, stron: 384
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Jêzyk C++ znajduje coraz wiêcej zastosowañ, w wypadku których biblioteka
standardowa czêsto okazuje siê zbyt uboga. Projekt Boost powsta³ w celu wype³nienia
luk i wyeliminowania niedoskona³oœci biblioteki STL. Dziœ biblioteki Boost zyskuj¹
coraz wiêksz¹ popularnoœæ, czego dowodem jest w³¹czenie dziesiêciu z nich do
przygotowywanej biblioteki standardowej jêzyka C++0x. Twórcy kolejnej specyfikacji
C++ zdecydowali siê nawet na kilka modyfikacji jêzyka w celu u³atwienia korzystania
z bibliotek Boost.
Ksi¹¿ka „Wiêcej ni¿ C++. Wprowadzenie do bibliotek Boost” to przegl¹d 58 bibliotek
projektu. Dwanaœcie z nich omówiono szczegó³owo i zilustrowano przyk³adami.
Analizuj¹c zaprezentowane projekty, przekonasz siê, jak bardzo biblioteki Boost
u³atwiaj¹ pracê i pozwalaj¹ ulepszyæ aplikacje. Nauczysz siê korzystaæ z inteligentnych
wskaŸników, obiektów funkcyjnych, wyra¿eñ regularnych i wielu innych funkcji
oferowanych przez biblioteki Boost.
Bezpieczna konwersja typów
Stosowanie elastycznych bibliotek kontenerów
Wyra¿enia regularne
Wywo³ania zwrotne
Zarz¹dzanie sygna³ami i slotami
Wykorzystaj ju¿ teraz elementy bibliotek Boost, a nowa biblioteka standardowa nie
bêdzie mia³a przed Tob¹ ¿adnych tajemnic.
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
ONOWOŒCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
319815107.003.png 319815107.004.png 319815107.005.png 319815107.006.png
Słowo wstępne ................................................................................. 9
Od autora ....................................................................................... 11
Podziękowania ................................................................................ 13
O autorze ....................................................................................... 15
Organizacja materiału ..................................................................... 17
Przegląd bibliotek Boost ................................................................. 19
Przetwarzanie tekstów i ciągów znaków ..........................................................................19
Struktury danych, kontenery, iteratory i algorytmy .........................................................21
Obiekty funkcyjne i programowanie wyższego rzędu .....................................................24
Programowanie uogólnione i metaprogramowanie z użyciem szablonów ......................26
Liczby i obliczenia ........................................................................................................... 29
Wejście-wyjście ...............................................................................................................31
Różne ................................................................................................................................32
Część I Biblioteki ogólnego przeznaczenia ..................................37
Rozdział 1. Biblioteka Smart_ptr ....................................................................... 39
Jak ulepszyć własne programy z użyciem biblioteki Smart_ptr? ....................................39
Po co nam inteligentne wskaźniki? ..................................................................................40
Jak ma się biblioteka Smart_ptr do biblioteki standardowej C++? ..................................41
scoped_ptr ........................................................................................................................42
scoped_array .....................................................................................................................50
shared_ptr .........................................................................................................................51
shared_array .....................................................................................................................63
intrusive_ptr .....................................................................................................................63
weak_ptr ...........................................................................................................................74
Smart_ptr — podsumowanie ............................................................................................82
Rozdział 2. Biblioteka Conversion ..................................................................... 83
Jak ulepszyć własne programy z użyciem biblioteki Conversion? ..................................83
polymorphic_cast .............................................................................................................84
polymorphic_downcast ....................................................................................................90
numeric_cast .....................................................................................................................93
lexical_cast .....................................................................................................................100
Conversion — podsumowanie .......................................................................................105
319815107.001.png
6
Spis treści
Rozdział 3. Biblioteka Utility ........................................................................... 107
Jak ulepszyć własne programy z użyciem biblioteki Utility? ........................................107
BOOST_STATIC_ASSERT ..........................................................................................108
checked_delete ...............................................................................................................110
noncopyable ...................................................................................................................114
addressof .........................................................................................................................119
enable_if .........................................................................................................................121
Utility — podsumowanie ...............................................................................................129
Rozdział 4. Biblioteka Operators ..................................................................... 131
Jak ulepszyć własne programy z użyciem biblioteki Operators? ...................................131
Jak ma się biblioteka Operators do biblioteki standardowej C++? ................................132
Operators ........................................................................................................................132
Stosowanie .....................................................................................................................137
Operators — podsumowanie ..........................................................................................156
Rozdział 5. Biblioteka Regex .......................................................................... 157
Jak ulepszyć własne programy z użyciem biblioteki Regex? ........................................157
Jak ma się biblioteka Regex do biblioteki standardowej C++? .....................................158
Regex ..............................................................................................................................158
Stosowanie ..................................................................................................................... 160
Regex — podsumowanie ...............................................................................................174
Część II Kontenery i struktury danych .......................................175
Rozdział 6. Biblioteka Any .............................................................................. 177
Jak ulepszyć własne programy z użyciem biblioteki Any? ............................................177
Jak ma się biblioteka Any do biblioteki standardowej C++? .........................................178
Any .................................................................................................................................178
Stosowanie .....................................................................................................................181
Any — podsumowanie ...................................................................................................203
Rozdział 7. Biblioteka Variant ......................................................................... 205
Jak ulepszyć własne programy z użyciem biblioteki Variant? ......................................205
Jak ma się biblioteka Variant do biblioteki standardowej C++? ....................................206
Variant ............................................................................................................................206
Stosowanie .....................................................................................................................209
Variant — podsumowanie ..............................................................................................219
Rozdział 8. Biblioteka Tuple ........................................................................... 221
Jak ulepszyć własne programy z użyciem biblioteki Tuple? .........................................221
Jak ma się biblioteka Tuple do biblioteki standardowej C++? ......................................222
Tuple ...............................................................................................................................222
Stosowanie .....................................................................................................................227
Tuple — podsumowanie ................................................................................................243
Część III Obiekty funkcyjne i programowanie wyższego rzędu .....245
Rozdział 9. Biblioteka Bind ............................................................................. 247
Jak ulepszyć własne programy z użyciem biblioteki Bind? ...........................................247
Jak ma się biblioteka Bind do biblioteki standardowej C++? ........................................248
Bind ................................................................................................................................248
Stosowanie .....................................................................................................................249
Bind — podsumowanie ..................................................................................................273
Spis treści
7
Rozdział 10. Biblioteka Lambda ........................................................................ 275
Jak ulepszyć własne programy z użyciem biblioteki Lambda? .....................................275
Jak ma się biblioteka Lambda do biblioteki standardowej języka C++? .......................276
Lambda ...........................................................................................................................277
Stosowanie .....................................................................................................................278
Lambda — podsumowanie .............................................................................................312
Rozdział 11. Biblioteka Function ....................................................................... 313
Jak ulepszyć własne programy z użyciem biblioteki Function? ....................................313
Jak ma się biblioteka Function do biblioteki standardowej języka C++? ......................313
Function ..........................................................................................................................314
Stosowanie .....................................................................................................................317
Function — podsumowanie ...........................................................................................337
Rozdział 12. Biblioteka Signals ......................................................................... 339
Jak ulepszyć własne programy z użyciem biblioteki Signals? .......................................339
Jak ma się biblioteka Signals do biblioteki standardowej języka C++? ........................340
Signals ............................................................................................................................340
Stosowanie .....................................................................................................................343
Signals — podsumowanie ..............................................................................................365
Bibliografia ................................................................................... 367
Skorowidz ..................................................................................... 371
Rozdział 1.
Jak ulepszyć własne programy
z użyciem biblioteki Smart_ptr?
Poprzez automatyczne zarządzanie czasem życia obiektów za pomocą
szablonu shared_ptr , bezpiecznie i efektywnie zarządzającego wspólnymi
zasobami.
Poprzez bezpieczne podglądanie zasobów wspólnych za pomocą szablonu
weak_ptr , co eliminuje ryzyko charakterystyczne dla wiszących wskaźników.
Poprzez osadzanie zasobów w zasięgach programu za pomocą szablonów
scoped_ptr i scoped_array , ułatwiających konserwację kodu i pomocnych
przy zabezpieczaniu przed zgubnym wpływem wyjątków.
Wskaźniki inteligentne, implementowane w bibliotece Smart_ptr, rozwiązują odwiecz-
ny problem zarządzania czasem życia zasobów (chodzi zwykle o zasoby przydzielane
dynamicznie 1 ). Inteligentne wskaźniki dostępne są w wielu odmianach. Wszystkie
jednak mają jedną cechę wspólną: automatyzację zarządzania zasobami. Ów auto-
matyzm manifestuje się rozmaicie, na przykład poprzez kontrolę czasu życia obiek-
tów przydzielanych dynamicznie czy też poprzez kontrolę nad akwizycją i zwalnia-
niem zasobów (plików, połączeń sieciowych itp.). Wskaźniki inteligentne z biblioteki
Boost implementują pierwsze z tych zastosowań, to jest przechowują wskaźniki do
dynamicznie przydzielanych obiektów, dbając o ich zwalnianie w odpowiednich mo-
mentach. Można się zastanawiać, czy to nie zbytnie ograniczenie ich zadań. Czy nie
można by zaimplementować również pozostałych aspektów zarządzania zasobami?
Cóż, można by, ale nie za darmo. Rozwiązania ogólne wymagają często większej zło-
żoności, a przy inteligentnych wskaźnikach biblioteki Boost główny nacisk położono
nawet nie tyle na elastyczność, co na wydajność. Ale dzięki możliwości implementowania
1 Czyli wszelkie zasoby, do których można się odwoływać za pośrednictwem typu wskaźnikowego
— również inteligentnego — przyp. aut.
319815107.002.png
Zgłoś jeśli naruszono regulamin