więcej niż c++. wprowadzenie do bibliotek boost helion, ebooki2

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • tykypyfyfy.xlx.pl
  • Podobne

     

    więcej niż c++. wprowadzenie do bibliotek boost helion, ebooki2

    [ Pobierz całość w formacie PDF ]
    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.
    38
    Część I
    Biblioteki ogólnego przeznaczenia
    własnych mechanizmów zwalniania najbardziej inteligentne ze wskaźników z rodziny
    Boost (
    boost::shared_ptr
    ) mogą obsługiwać zasoby wymagające przy zwalnianiu
    bardziej wyrafinowanych operacji niż proste wywołanie
    delete
    . Pięć implementacji
    wskaźników inteligentnych w bibliotece Boost.Smart_ptr odzwierciedla zaś szereg
    kategorii potrzeb pojawiających się w programowaniu.
    Po co nam inteligentne wskaźniki?
    Po co nam inteligentne wskaźniki?
    Wskaźniki inteligentne stosuje się przy:
    manipulowaniu zasobami pozostającymi w posiadaniu wielu obiektów,
    pisaniu kodu odpornego na wyjątki,
    unikaniu typowych błędów w postaci wycieków zasobów.
    Współdzielenie własności
    zachodzi, kiedy dany obiekt jest użytkowany przez pewną
    liczbę innych obiektów. Jak (albo raczej: kiedy) należy zwolnić ów używany obiekt?
    Aby rozpoznać odpowiedni moment zwolnienia współużytkowanego obiektu, nale-
    żałoby wyposażyć każdy z obiektów użytkujących w informacje o współwłaścicielach.
    Tego rodzaju wiązanie obiektów nie jest pożądane z punktu widzenia poprawności
    projektowej, a także z uwagi na łatwość konserwacji kodu. Lepiej byłoby, aby obiek-
    ty-współwłaściciele złożyły odpowiedzialność za zarządzanie czasem życia współużyt-
    kowanego obiektu na inteligentny wskaźnik. Ten, po wykryciu, że nie ma już żadnego
    właściciela, może bezpiecznie zwolnić obiekt użytkowany.
    Odporność na wyjątki
    to w najprostszym ujęciu zabezpieczenie przed wyciekami za-
    sobów, jak również zabezpieczenie trwałości niezmienników programu w obliczu
    wyjątków. Obiekt przydzielony dynamicznie może w obliczu wyjątku nie zostać zwol-
    niony. W ramach procedury zwijania stosu przy zrzucaniu wyjątku i porzucaniu bie-
    żącego zasięgu dojdzie do utracenia wskaźników obiektów dynamicznych, co uniemoż-
    liwi zwolnienie obiektu aż do momentu zakończenia programu (a i w fazie końcowej
    programu język nie daje gwarancji zwolnienia zasobów). Program niezabezpieczony
    przed takim wpływem wyjątków może nie tylko doprowadzić do deficytu pamięci
    operacyjnej, ale i znaleźć się w niestabilnym stanie; zastosowanie wskaźników inteli-
    gentnych automatyzuje zwalnianie zasobów nawet w obliczu wyjątków.
    Co do
    unikania typowych błędów
    , to najbardziej typowym jest chyba pominięcie (wyni-
    kające z przeoczenia) wywołania
    delete
    . Tymczasem typowy inteligentny wskaźnik
    nie śledzi bynajmniej ścieżek przebiegu wykonania programu — jego jedyną troską
    jest zwolnienie wskazywanego obiektu wywołaniem
    delete
    w ramach własnej de-
    strukcji. Stosowanie inteligentnych wskaźników zwalnia więc programistę od ko-
    nieczności śledzenia pożądanych momentów zwalniania obiektów. Do tego inteligentne
    wskaźniki mogą ukrywać szczegóły dealokacji, dzięki czemu klienci nie muszą wie-
    [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • mement.xlx.pl
  • Designed by Finerdesign.com