Facebook - konwersja

C++. Dla każdego. Wydanie VII - ebook

Wydawnictwo:
Data wydania:
31 stycznia 2014
Format ebooka:
EPUB
Format EPUB
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najpopularniejszych formatów e-booków na świecie. Niezwykle wygodny i przyjazny czytelnikom - w przeciwieństwie do formatu PDF umożliwia skalowanie czcionki, dzięki czemu możliwe jest dopasowanie jej wielkości do kroju i rozmiarów ekranu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, PDF
Format PDF
czytaj
na laptopie
czytaj
na tablecie
Format e-booków, który możesz odczytywać na tablecie oraz laptopie. Pliki PDF są odczytywane również przez czytniki i smartfony, jednakze względu na komfort czytania i brak możliwości skalowania czcionki, czytanie plików PDF na tych urządzeniach może być męczące dla oczu. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
, MOBI
Format MOBI
czytaj
na czytniku
czytaj
na tablecie
czytaj
na smartfonie
Jeden z najczęściej wybieranych formatów wśród czytelników e-booków. Możesz go odczytać na czytniku Kindle oraz na smartfonach i tabletach po zainstalowaniu specjalnej aplikacji. Więcej informacji znajdziesz w dziale Pomoc.
Multiformat
E-booki w Virtualo.pl dostępne są w opcji multiformatu. Oznacza to, że po dokonaniu zakupu, e-book pojawi się na Twoim koncie we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu.
(3w1)
Multiformat
E-booki sprzedawane w księgarni Virtualo.pl dostępne są w opcji multiformatu - kupujesz treść, nie format. Po dodaniu e-booka do koszyka i dokonaniu płatności, e-book pojawi się na Twoim koncie w Mojej Bibliotece we wszystkich formatach dostępnych aktualnie dla danego tytułu. Informacja o dostępności poszczególnych formatów znajduje się na karcie produktu przy okładce. Uwaga: audiobooki nie są objęte opcją multiformatu.
czytaj
na laptopie
Pliki PDF zabezpieczone watermarkiem możesz odczytać na dowolnym laptopie po zainstalowaniu czytnika dokumentów PDF. Najpowszechniejszym programem, który umożliwi odczytanie pliku PDF na laptopie, jest Adobe Reader. W zależności od potrzeb, możesz zainstalować również inny program - e-booki PDF pod względem sposobu odczytywania nie różnią niczym od powszechnie stosowanych dokumentów PDF, które odczytujemy każdego dnia.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na tablecie
Aby odczytywać e-booki na swoim tablecie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. Bluefire dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na czytniku
Czytanie na e-czytniku z ekranem e-ink jest bardzo wygodne i nie męczy wzroku. Pliki przystosowane do odczytywania na czytnikach to przede wszystkim EPUB (ten format możesz odczytać m.in. na czytnikach PocketBook) i MOBI (ten fromat możesz odczytać m.in. na czytnikach Kindle).
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
czytaj
na smartfonie
Aby odczytywać e-booki na swoim smartfonie musisz zainstalować specjalną aplikację. W zależności od formatu e-booka oraz systemu operacyjnego, który jest zainstalowany na Twoim urządzeniu może to być np. iBooks dla EPUBa lub aplikacja Kindle dla formatu MOBI.
Informacje na temat zabezpieczenia e-booka znajdziesz na karcie produktu w "Szczegółach na temat e-booka". Więcej informacji znajdziesz w dziale Pomoc.
99,00

C++. Dla każdego. Wydanie VII - ebook

Programowanie w Twoim zasięgu!

Pomimo swojego wieku C++ wciąż zajmuje wysoką lokatę na liście najpopularniejszych języków programowania. Przez lata dzięki wydajności oraz dostępności zdobył sobie licznych wielbicieli i wciąż jest niezastąpiony w wielu zadaniach, choć w branży przewagę nad nim mają język Java i platforma .NET. Jeżeli jednak oczekujesz najwyższej wydajności i przewidywalnego czasu wykonania zadania, język C++ może okazać się jedynym słusznym wyborem.

Z tą książką opanujesz język C++ bez trudu, poświęcając na to tylko godzinę dziennie! W trakcie lektury zgłębisz jego tajniki, poznasz zalety oraz wady. Każda kolejna godzina to coraz bardziej zaawansowana, a przy tym ciekawsza dawka wiedzy. Opanowanie materiału zawartego w podręczniku pozwoli Ci na pisanie programów o różnym stopniu złożoności oraz swobodne poruszanie się w świecie języka C++. W trakcie lektury opanujesz składnię i elementy języka - tablice, instrukcje warunkowe, pętle czy stałe nie będą miały przed Tobą żadnych tajemnic. W kolejnych rozdziałach dowiesz się, jak wykorzystać wskaźniki i dyrektywy kompilatora. Ponadto zaznajomisz się z zasadami programowania obiektowego oraz poznasz nowości zawarte w wersji 11. Książka ta jest doskonałym źródłem wiedzy dla każdego adepta języka C++!

Dzięki tej książce:

  • poznasz składnię języka C++
  • opanujesz nowości wersji 11 języka C++
  • poznasz zasady programowania obiektowego
  • napiszesz program o dowolnym stopniu skomplikowania

Poznaj i wykorzystaj potencjał języka C++!

Spis treści

O autorze (21)

Wstęp (23)

CZĘŚĆ I. PODSTAWY (27)

Lekcja 1. Zaczynamy (29)

  • Krótka historia języka C++ (30)
    • Powiązanie z językiem C (30)
    • Zalety języka C++ (30)
    • Ewolucja standardu C++ (31)
    • Kto używa programów utworzonych w C++? (31)
  • Tworzenie aplikacji C++ (32)
    • Kroki prowadzące do wygenerowania pliku wykonywalnego (32)
    • Analiza błędów i ich usuwanie (33)
    • Zintegrowane środowiska programistyczne (33)
    • Tworzenie pierwszej aplikacji w C++ (34)
    • Kompilacja i uruchomienie pierwszej aplikacji w C++ (35)
    • Błędy kompilacji (37)
  • Co nowego w C++11? (37)
  • Podsumowanie (38)
  • Pytania i odpowiedzi (38)
  • Warsztaty (39)

Lekcja 2. Anatomia programu C++ (41)

  • Komponenty programu (42)
    • Dyrektywa preprocesora #include (42)
    • Część główna programu - funkcja main() (43)
    • Wartość zwrotna (44)
  • Koncepcja przestrzeni nazw (45)
  • Komentarze w kodzie C++ (47)
  • Funkcje w C++ (48)
  • Podstawowe wejście za pomocą std::cin i wyjście za pomocą std::cout (51)
  • Podsumowanie (53)
  • Pytania i odpowiedzi (53)
  • Warsztaty (54)

Lekcja 3. Zmienne i stałe (55)

  • Czym jest zmienna? (56)
    • Ogólne omówienie pamięci i adresowania (56)
    • Deklarowanie zmiennych uzyskujących dostęp i używających pamięci (56)
    • Deklarowanie i inicjalizowanie wielu zmiennych tego samego typu (59)
    • Zrozumienie zakresu zmiennej (59)
    • Zmienne globalne (61)
  • Typy zmiennych najczęściej używane w C++ (63)
    • Użycie typu bool do przechowywania wartości boolowskich (64)
    • Użycie typu char do przechowywania znaków (65)
    • Koncepcja liczb ze znakiem i bez znaku (65)
    • Liczby całkowite ze znakiem, czyli typy short, int, long i long long (66)
    • Liczby całkowite bez znaku, czyli typy unsigned short, unsigned int, unsigned long i unsigned long long (67)
    • Typy zmiennoprzecinkowe float i double (67)
  • Określanie wielkości zmiennej za pomocą sizeof (68)
  • Użycie typedef do zastąpienia typu zmiennej (72)
  • Czym jest stała? (72)
    • Dosłowne stałe (73)
    • Deklarowanie zmiennych jako stałych przy użyciu const (74)
    • Deklarowanie stałych za pomocą constexpr (75)
    • Stałe typu wyliczeniowego (76)
    • Definiowanie stałych za pomocą dyrektywy #define (78)
  • Nazwy zmiennych i stałych (79)
  • Słowa kluczowe, których nie można używać jako nazw zmiennych lub stałych (80)
  • Podsumowanie (80)
  • Pytania i odpowiedzi (81)
  • Warsztaty (84)

Lekcja 4. Tablice i ciągi tekstowe (85)

  • Czym jest tablica? (86)
    • Kiedy trzeba użyć tablicy? (86)
    • Deklarowanie i inicjalizacja tablic statycznych (87)
    • Jak w tablicy przechowywane są dane? (88)
    • Uzyskanie dostępu do danych przechowywanych w tablicy (90)
    • Modyfikacja danych przechowywanych w tablicy (91)
  • Tablice wielowymiarowe (94)
    • Deklarowanie i inicjalizowanie tablic wielowymiarowych (95)
    • Uzyskanie dostępu do elementów tablicy wielowymiarowej (95)
  • Tablice dynamiczne (97)
  • Ciągi tekstowe w stylu C (99)
  • Ciągi tekstowe C++ - użycie klasy std::string (102)
  • Podsumowanie (104)
  • Pytania i odpowiedzi (105)
  • Warsztaty (106)

Lekcja 5. Wyrażenia, instrukcje i operatory (109)

  • Polecenia (110)
  • Polecenia złożone, czyli bloki (111)
  • Użycie operatorów (111)
    • Operator przypisania (=) (111)
    • Zrozumienie l-wartości i r-wartości (112)
    • Operatory dodawania (+), odejmowania (-), mnożenia (*), dzielenia (/) i reszty z dzielenia (%) (112)
    • Operatory inkrementacji (++) i dekrementacji (--) (113)
    • Operator postfiksowy czy prefiksowy? (114)
    • Operatory równości (==) i nierówności (!=) (117)
    • Operatory relacji (118)
    • Operatory logiczne NOT, AND, OR i XOR (120)
    • Użycie w C++ operatorów logicznych NOT (!), AND (&&) i OR (||) (122)
    • Bitowe operatory NOT (~), AND (&), OR (|) i XOR (^) (126)
    • Operatory bitowego przesunięcia w prawo (>>) oraz w lewo (<<) (128)
    • Złożone operatory przypisania (130)
    • Użycie operatora sizeof w celu określenia ilości pamięci zajmowanej przez zmienną (132)
    • Pierwszeństwo operatorów (133)
  • Podsumowanie (136)
  • Pytania i odpowiedzi (136)
  • Warsztaty (137)

Lekcja 6. Sterowanie przebiegiem działania programu (139)

  • Wykonanie warunkowe za pomocą if-else (140)
    • Programowanie warunkowe z użyciem if-else (141)
    • Warunkowe wykonanie wielu poleceń (143)
    • Zagnieżdżone polecenia if (145)
    • Przetwarzanie warunkowe za pomocą switch-case (149)
    • Wykonywanie warunkowe przy użyciu operatora ?: (153)
  • Wykonywanie kodu w pętlach (154)
    • Bardzo prosta pętla wykonywana przy użyciu polecenia goto (155)
    • Pętla while (157)
    • Pętla do...while (159)
    • Pętla for (161)
  • Zmiana zachowania pętli za pomocą poleceń continue i break (165)
    • Pętle działające w nieskończoność (165)
    • Kontrolowanie pętli działającej w nieskończoność (166)
  • Programowanie zagnieżdżonych pętli (169)
    • Użycie zagnieżdżonych pętli do iteracji tablic wielowymiarowych (171)
    • Użycie zagnieżdżonych pętli do obliczenia liczb ciągu Fibonacciego (173)
  • Podsumowanie (174)
  • Pytania i odpowiedzi (175)
  • Warsztaty (176)

Lekcja 7. Funkcje (179)

  • Kiedy należy stosować funkcje? (180)
    • Czym jest prototyp funkcji? (181)
    • Czym jest definicja funkcji? (182)
    • Czym jest wywołanie funkcji i argumenty? (182)
    • Tworzenie funkcji z wieloma parametrami (183)
    • Tworzenie funkcji bez parametrów i bez wartości zwrotnej (185)
    • Parametry funkcji wraz z wartościami domyślnymi (186)
    • Rekurencja, czyli funkcja wywołująca samą siebie (188)
    • Funkcje z wieloma poleceniami return (190)
  • Użycie funkcji do pracy z różnymi formami danych (191)
    • Przeciążanie funkcji (192)
    • Przekazanie funkcji tablicy wartości (194)
    • Przekazywanie argumentów przez referencję (195)
  • Jak wywołania funkcji są obsługiwane przez mikroprocesor? (197)
    • Funkcje typu inline (198)
    • Funkcja lambda (200)
  • Podsumowanie (202)
  • Pytania i odpowiedzi (203)
  • Warsztaty (204)

Lekcja 8. Wskaźniki i referencje (207)

  • Czym jest wskaźnik? (208)
    • Deklaracja wskaźnika (208)
    • Określenie adresu zmiennej przy użyciu operatora referencji (&) (209)
    • Użycie wskaźników do przechowywania adresów (210)
    • Uzyskanie dostępu do danych przy użyciu operatora dereferencji (*) (213)
    • Ile pamięci zabiera wskaźnik? (216)
  • Dynamiczna alokacja pamięci (218)
    • Użycie operatorów new i delete w celu dynamicznej alokacji i zwalniania pamięci (218)
    • Efektywne użycie operatorów inkrementacji (++) i dekrementacji (--) na wskaźnikach (222)
    • Użycie słowa kluczowego const ze wskaźnikami (225)
    • Przekazywanie wskaźników funkcjom (227)
    • Podobieństwa pomiędzy tablicami i wskaźnikami (228)
  • Najczęstsze błędy programistyczne popełniane podczas używania wskaźników (231)
    • Wycieki pamięci (232)
    • Kiedy wskaźnik nie prowadzi do poprawnego adresu w pamięci? (232)
    • Zawieszone wskaźniki (nazywane również zabłąkanymi) (234)
  • Najlepsze praktyki podczas pracy ze wskaźnikami (234)
    • Sprawdzenie, czy żądanie alokacji zakończyło się powodzeniem (236)
  • Czym jest referencja? (240)
    • Dlaczego referencje są użyteczne? (241)
    • Użycie słowa kluczowego const w referencjach (243)
    • Przekazywanie funkcji argumentów przez referencję (243)
  • Podsumowanie (245)
  • Pytania i odpowiedzi (245)
  • Warsztaty (247)

CZĘŚĆ II. PODSTAWY PROGRAMOWANIA ZORIENTOWANEGO OBIEKTOWO W C++ (249)

Lekcja 9. Klasy i obiekty (251)

  • Koncepcja klas i obiektów (252)
    • Deklarowanie klasy (252)
    • Tworzenie obiektu klasy (253)
    • Uzyskanie dostępu do elementów składowych przy użyciu operatora kropki (254)
    • Uzyskanie dostępu do elementów składowych przy użyciu operatora wskaźnika (255)
  • Słowa kluczowe public i private (257)
    • Abstrakcja danych dzięki słowu kluczowemu private (259)
  • Konstruktory (261)
    • Deklarowanie i implementowanie konstruktora (261)
    • Kiedy i jak używać konstruktorów? (262)
    • Przeciążanie konstruktorów (264)
    • Klasa bez konstruktora domyślnego (267)
    • Parametry konstruktora wraz z wartościami domyślnymi (269)
    • Konstruktory wraz z listami inicjalizacyjnymi (270)
  • Destruktor (272)
    • Deklarowanie i implementowanie destruktora (272)
    • Kiedy i jak używać destruktorów? (273)
  • Konstruktor kopiujący (276)
    • Kopiowanie płytkie i związane z tym problemy (276)
    • Wykonanie głębokiej kopii przy użyciu konstruktora kopiującego (279)
    • Konstruktory przenoszące pomagają w poprawieniu wydajności (284)
  • Różne sposoby użycia konstruktorów i destruktora (286)
    • Klasa, której nie można kopiować (286)
    • Klasa typu Singleton, która pozwala na istnienie tylko jednego egzemplarza (287)
    • Klasy, których egzemplarze nie mogą być tworzone na stosie (290)
  • Wskaźnik this (292)
  • Operator sizeof() dla klasy (293)
  • Jaka jest różnica pomiędzy strukturą i klasą? (297)
  • Deklaracja "przyjaciela" klasy (297)
  • Podsumowanie (300)
  • Pytania i odpowiedzi (300)
  • Warsztaty (302)

Lekcja 10. Dziedziczenie (305)

  • Podstawy dziedziczenia (306)
    • Dziedziczenie i pochodzenie (306)
    • Stosowana w języku C++ składnia pochodzenia (308)
    • Specyfikator dostępu protected (311)
    • Inicjalizacja klasy bazowej - przekazywanie parametrów klasie bazowej (314)
    • Klasy potomne nadpisują metody klasy bazowej (316)
    • Wywoływanie nadpisanych metod klasy bazowej (319)
    • Wywoływanie metod klasy bazowej z poziomu klas potomnych (319)
    • Klasy potomne ukrywają metody klasy bazowej (321)
    • Kolejność użycia konstruktorów (324)
    • Kolejność użycia destruktorów (324)
  • Dziedziczenie prywatne (327)
  • Dziedziczenie chronione (330)
  • Problem segmentowania (333)
  • Dziedziczenie wielokrotne (334)
  • Podsumowanie (337)
  • Pytania i odpowiedzi (338)
  • Warsztaty (339)

Lekcja 11. Polimorfizm (341)

  • Podstawy polimorfizmu (342)
    • Potrzeba stosowania polimorfizmu (342)
    • Zachowanie polimorficzne implementowane przy użyciu funkcji wirtualnych (344)
    • Konieczność stosowania wirtualnych destruktorów (346)
    • Jak działa funkcja wirtualna? Zrozumienie tabeli funkcji wirtualnych (351)
    • Abstrakcyjne klasy bazowe i funkcje czysto wirtualne (355)
  • Użycie dziedziczenia prywatnego do rozwiązania problemu niejednoznaczności semantycznej (358)
  • Wirtualne konstruktory kopiujące? (363)
  • Podsumowanie (367)
  • Pytania i odpowiedzi (367)
  • Warsztaty (368)

Lekcja 12. Typy operatorów i ich przeciążanie (371)

  • Czym są operatory w C++? (372)
  • Operatory jednoargumentowe (373)
    • Typy operatorów jednoargumentowych (373)
    • Programowanie jednoargumentowego operatora inkrementacji i dekrementacji (374)
    • Programowanie operatorów konwersji (378)
    • Programowanie operatora dereferencji (*) i operatora wyboru elementu składowego (->) (380)
  • Operatory dwuargumentowe (384)
    • Typy operatorów dwuargumentowych (385)
    • Programowanie operatorów dodawania (a+b) i odejmowania (a-b) (386)
    • Implementowanie operatorów dodawania/przypisania (+=) i odejmowania/przypisania (-=) (389)
    • Przeciążanie operatorów równości (==) i nierówności (!=) (391)
    • Przeciążanie operatorów <, >, <= i >= (394)
    • Przeciążanie kopiującego operatora przypisania (=) (397)
    • Operatory indeksowania (400)
  • Funkcja operator() (404)
    • Użycie konstruktora przenoszącego i przenoszącego operatora przypisania w wysokowydajnym programowaniu (406)
  • Operatory, których nie można ponownie zdefiniować (413)
  • Podsumowanie (414)
  • Pytania i odpowiedzi (414)
  • Warsztaty (415)

Lekcja 13. Operatory rzutowania (417)

  • Kiedy trzeba skorzystać z rzutowania? (418)
  • Dlaczego rzutowanie w stylu C nie jest popularne wśród niektórych programistów C++? (419)
  • Operatory rzutowania C++ (419)
    • Użycie static_cast (420)
    • Użycie dynamic_cast i identyfikacja typu w czasie działania (421)
    • Użycie reinterpret_cast (425)
    • Użycie const_cast (426)
  • Problemy z operatorami rzutowania C++ (427)
  • Podsumowanie (429)
  • Pytania i odpowiedzi (429)
  • Warsztaty (430)

Lekcja 14. Wprowadzenie do makr i wzorców (433)

  • Preprocesor i kompilator (434)
  • Użycie dyrektywy #define do definiowania stałych (434)
    • Użycie makr do ochrony przed wielokrotnym dołączaniem (437)
  • Użycie dyrektywy #define do definiowania funkcji (438)
    • Po co te wszystkie nawiasy? (440)
    • Użycie makra assert do sprawdzania wyrażeń (441)
    • Wady i zalety użycia funkcji makro (443)
  • Wprowadzenie do wzorców (444)
    • Składnia deklaracji wzorca (445)
    • Różne rodzaje deklaracji wzorca (446)
    • Funkcje wzorca (446)
    • Wzorce i bezpieczeństwo typów (448)
    • Klasy wzorca (449)
    • Ustanawianie i specjalizacja wzorca (450)
    • Deklarowanie wzorców z wieloma parametrami (451)
    • Deklarowanie wzorców z parametrami domyślnymi (452)
    • Przykład wzorca (452)
    • Klasy wzorców i statyczne elementy składowe (454)
    • Użycie static_assert do przeprowadzania operacji sprawdzania w trakcie kompilacji (456)
    • Użycie wzorców w praktycznym programowaniu C++ (457)
  • Podsumowanie (458)
  • Pytania i odpowiedzi (458)
  • Warsztaty (459)

CZĘŚĆ III. POZNAJEMY STANDARDOWĄ BIBLIOTEKĘ WZORCÓW (STL) (461)

Lekcja 15. Wprowadzenie do standardowej biblioteki wzorców (463)

  • Kontenery STL (464)
    • Kontenery sekwencyjne (464)
    • Kontenery asocjacyjne (465)
    • Wybór odpowiedniego kontenera (466)
    • Adaptery (469)
  • Iteratory STL (470)
  • Algorytmy STL (471)
  • Oddziaływania między kontenerami i algorytmami za pomocą iteratorów (472)
    • Użycie słowa kluczowego auto pozwalającego kompilatorowi na definicję typu (474)
  • Klasy STL string (475)
  • Podsumowanie (475)
  • Pytania i odpowiedzi (475)
  • Warsztaty (476)

Lekcja 16. Klasa string w STL (479)

  • Dlaczego potrzebna jest klasa służąca do manipulowania ciągami tekstowymi? (480)
  • Praca z klasą STL string (481)
    • Ustanawianie obiektu STL string i tworzenie kopii (482)
    • Uzyskanie dostępu do obiektu string i jego zawartości (484)
    • Łączenie ciągów tekstowych (487)
    • Wyszukiwanie znaku bądź podciągu tekstowego w obiekcie string (488)
    • Skracanie obiektu STL string (490)
    • Uproszczenie deklaracji iteratora przy użyciu słowa kluczowego auto (493)
    • Odwracanie zawartości ciągu tekstowego (493)
    • Konwersja wielkości znaków obiektu string (494)
  • Implementacja klasy STL string oparta na wzorcach (496)
  • Podsumowanie (496)
  • Pytania i odpowiedzi (497)
  • Warsztaty (497)

Lekcja 17. Dynamiczne klasy tablic w STL (499)

  • Charakterystyka klasy std::vector (500)
  • Typowe operacje klasy vector (500)
    • Ustanawianie klasy vector (500)
    • Wstawianie elementów na końcu przy użyciu push_back() (503)
  • Listy inicjalizacyjne (504)
    • Wstawianie elementów w określonym położeniu przy użyciu metody insert() (504)
    • Uzyskanie dostępu do elementów obiektu vector przy użyciu semantyki tablicy (508)
    • Uzyskanie dostępu do elementów obiektu vector przy użyciu semantyki wskaźnika (510)
    • Usuwanie elementów z obiektu vector (511)
  • Zrozumienie koncepcji wielkości i pojemności (513)
  • Klasa STL deque (515)
  • Podsumowanie (518)
  • Pytania i odpowiedzi (519)
  • Warsztaty (520)

Lekcja 18. Klasy STL list i forward_list (523)

  • Charakterystyka klasy std::list (524)
  • Podstawowe operacje klasy list (524)
    • Ustanawianie obiektu std::list (524)
    • Wstawianie elementów na początku obiektu list (526)
    • Wstawianie elementów w środku obiektu list (529)
    • Usuwanie elementów w obiekcie list (531)
  • Odwrócenie i sortowanie elementów w obiekcie list (533)
    • Odwracanie elementów (534)
    • Sortowanie elementów (535)
    • Sortowanie i usuwanie elementów listy zawierających obiekty danej klasy (538)
  • Podsumowanie (544)
  • Pytania i odpowiedzi (545)
  • Warsztaty (545)

Lekcja 19. Klasy STL set (547)

  • Wprowadzenie do klas STL set (548)
  • Podstawowe operacje klas STL set i multiset (549)
    • Ustanawianie obiektu std::set (549)
    • Wstawianie elementów do obiektów set lub multiset (552)
    • Wyszukiwanie elementów w obiektach STL set lub multiset (554)
    • Usuwanie elementów z obiektów STL set lub multiset (556)
  • Wady i zalety używania obiektów STL set i multiset (562)
  • Podsumowanie (566)
  • Pytania i odpowiedzi (566)
  • Warsztaty (567)

Lekcja 20. Klasy STL map (569)

  • Krótkie wprowadzenie do klas STL map (570)
  • Podstawowe operacje klas STL map i multimap (571)
    • Ustanawianie obiektu std::map lub std::multimap (571)
    • Wstawianie elementów do obiektów STL map lub multimap (573)
    • Wyszukiwanie elementów w obiekcie STL map (577)
    • Wyszukiwanie elementów w obiekcie STL multimap (579)
    • Usuwanie elementów z obiektów STL map lub multimap (580)
  • Dostarczanie własnego predykatu sortowania (583)
    • Jak działa tabela hash? (588)
    • Używanie tabel hash w C++11: unordered_map i unordered_multimap (588)
  • Podsumowanie (593)
  • Pytania i odpowiedzi (593)
  • Warsztaty (594)

CZĘŚĆ IV. JESZCZE WIĘCEJ STL (597)

Lekcja 21. Zrozumienie obiektów funkcji (599)

  • Koncepcja obiektów funkcji i predykatów (600)
  • Typowe aplikacje obiektów funkcji (600)
    • Funkcje jednoargumentowe (600)
    • Predykat jednoargumentowy (606)
    • Funkcje dwuargumentowe (608)
    • Predykat dwuargumentowy (611)
  • Podsumowanie (614)
  • Pytania i odpowiedzi (614)
  • Warsztaty (615)

Lekcja 22. Wyrażenia lambda w C++11 (617)

  • Czym są wyrażenia lambda? (618)
  • W jaki sposób zdefiniować wyrażenie lambda? (619)
  • Wyrażenie lambda dla funkcji jednoargumentowej (619)
  • Wyrażenie lambda dla predykatu jednoargumentowego (621)
  • Wyrażenie lambda wraz ze stanem przy użyciu listy przechwytywania [...\ (622)
  • Ogólna składnia wyrażeń lambda (624)
  • Wyrażenie lambda dla funkcji dwuargumentowej (626)
  • Wyrażenie lambda dla predykatu dwuargumentowego (628)
  • Podsumowanie (631)
  • Pytania i odpowiedzi (632)
  • Warsztaty (632)

Lekcja 23. Algorytmy STL (635)

  • Co to są algorytmy STL? (636)
  • Klasyfikacja algorytmów STL (636)
    • Algorytmy niezmienne (636)
    • Algorytmy zmienne (638)
  • Używanie algorytmów STL (640)
    • Znajdowanie elementów o podanej wartości lub warunku (640)
    • Zliczanie elementów o podanej wartości lub warunku (643)
    • Wyszukiwanie elementu lub zakresu w kolekcji (645)
    • Inicjalizacja w kontenerze elementów wraz z określonymi wartościami (648)
    • Użycie std::generate() do inicjalizacji elementów wartościami wygenerowanymi w trakcie działania programu (650)
    • Przetwarzanie elementów w zakresie za pomocą for_each (652)
    • Przeprowadzanie transformacji zakresu za pomocą std::transform (654)
    • Operacje kopiowania i usuwania (657)
    • Zastępowanie wartości oraz zastępowanie elementu na podstawie danego warunku (661)
    • Sortowanie i przeszukiwanie posortowanej kolekcji oraz usuwanie duplikatów (663)
    • Partycjonowanie zakresu (666)
    • Wstawianie elementów do posortowanej kolekcji (669)
  • Podsumowanie (672)
  • Pytania i odpowiedzi (672)
  • Warsztaty (673)

Lekcja 24. Kontenery adaptacyjne: stack i queue (675)

  • Cechy charakterystyczne zachowania stosów i kolejek (676)
    • Stosy (676)
    • Kolejki (676)
  • Używanie klasy STL stack (677)
    • Ustanawianie obiektu stack (677)
    • Funkcje składowe klasy stack (679)
    • Wstawianie i usuwanie elementów z góry stosu przy użyciu metod push() i pop() (679)
  • Używanie klasy STL queue (681)
    • Ustanawianie obiektu queue (682)
    • Funkcje składowe klasy queue (683)
    • Wstawianie na końcu i usuwanie na początku kolejki przy użyciu metod push() i pop() (684)
  • Używanie klasy STL priority_queue (686)
    • Ustanawianie obiektu priority_queue (686)
    • Funkcje składowe klasy priority_queue (688)
    • Wstawianie na końcu i usuwanie na początku kolejki priorytetowej przy użyciu metod push() i pop() (689)
  • Podsumowanie (692)
  • Pytania i odpowiedzi (692)
  • Warsztaty (693)

Lekcja 25. Praca z opcjami bitowymi za pomocą STL (695)

  • Klasa bitset (696)
    • Ustanowienie klasy std::bitset (696)
  • Używanie klasy std::bitset i jej elementów składowych (698)
    • Operatory std::bitset (698)
    • Metody składowe klasy std::bitset (699)
  • Klasa vector<bool> (702)
    • Ustanowienie klasy vector<bool> (702)
    • Używanie klasy vector<bool> (703)
  • Podsumowanie (704)
  • Pytania i odpowiedzi (705)
  • Warsztaty (705)

CZĘŚĆ V. ZAAWANSOWANE KONCEPCJE C++ (707)

Lekcja 26. Sprytne wskaźniki (709)

  • Czym są sprytne wskaźniki? (710)
    • Na czym polega problem związany z używaniem wskaźników konwencjonalnych? (710)
    • W jaki sposób sprytne wskaźniki mogą pomóc? (711)
  • W jaki sposób są implementowane sprytne wskaźniki? (711)
  • Typy sprytnych wskaźników (713)
    • Kopiowanie głębokie (714)
    • Mechanizm kopiowania przy zapisie (COW) (716)
    • Sprytne wskaźniki zliczania odniesień (716)
    • Sprytne wskaźniki powiązane z licznikiem odniesień (717)
    • Kopiowanie destrukcyjne (718)
    • Używanie klasy std::unique_ptr (720)
  • Popularne biblioteki sprytnych wskaźników (722)
  • Podsumowanie (723)
  • Pytania i...
Kategoria: Programowanie
Zabezpieczenie: Watermark
Watermark
Watermarkowanie polega na znakowaniu plików wewnątrz treści, dzięki czemu możliwe jest rozpoznanie unikatowej licencji transakcyjnej Użytkownika. E-książki zabezpieczone watermarkiem można odczytywać na wszystkich urządzeniach odtwarzających wybrany format (czytniki, tablety, smartfony). Nie ma również ograniczeń liczby licencji oraz istnieje możliwość swobodnego przenoszenia plików między urządzeniami. Pliki z watermarkiem są kompatybilne z popularnymi programami do odczytywania ebooków, jak np. Calibre oraz aplikacjami na urządzenia mobilne na takie platformy jak iOS oraz Android.
ISBN: 978-83-246-8078-8
Rozmiar pliku: 4,5 MB

BESTSELLERY

Kategorie: