Home - SteelPh0enix/KursCPP GitHub Wiki

Kurs C++

Na podstawie poniższego spisu treści prawdopodobnie powstanie niedługo videokurs C++a dla początkujących. Do tego momentu, sugeruję zapoznać się z poniższym artykułem jeśli szukasz sprawdzonych i dobrych źródeł nauki: Materiały do nauki C++'a

Kurs języka C++ - podstawy

Poniższe rozdziały dotyczą absolutnych podstaw języka - składni, podstawowych wyrażeń i narzędzi.

Część 0: Hello, world! - Opis języka C++ oraz prezentacja kilku środowisk programistycznych, których możesz używać do pisania kodu.

Część 1: Zmienne - Opis pojęcia zmiennej, oraz przykładowe zastosowania.

Część 2: Podstawowe typy - Lista podstawowych typów, jakie oferuje standard języka.

Część 3: Operatory - Lista operatorów arytmetycznych oraz logicznych, wraz z przykładami ich użycia

Część 4: Instrukcje warunkowe - Opis instrukcji warunkowych if oraz switch.

Część 5: Pętle - Opis podstawowych pętli: while, do i for.

Część 6: Funkcje - Podstawowe informacje na temat funkcji, oraz przykłady ich zastosowania

Część 7: Tablice - O tym co to są tablice oraz jak się ich używa.

Część 8: Referencje - Czyli dość prosta droga do optymalizacji kodu

Część 9: Łańcuchy znaków - std::string - Bezbolesna obsługa tekstu

Część 10: Enumeracje - Proste narzędzie do wyliczania i nie tylko

Część 11: Rzutowania - Czyli jak zamieniać jeden typ, na drugi

Część 12: const - Bezpieczeństwo i szybkość w jednym

Podsumowanie I - Kalkulator - wykorzystując poznane do tej pory elementy języka, stworzymy kalkulator

Podsumowanie II - Kółko i krzyżyk - wykorzystując poznane elementy języka, napiszemy proste kółko i krzyżyk w konsoli

Kurs języka C++ - poziom drugi

W tej części opiszę więcej narzędzi udostępnianych przez bibliotekę standardową, oraz nieco bardziej zaawansowane aspekty języka - między innymi podstawy OOP oraz szablonów

Część 13: Wyjątki - O obsłudze błędów słów kilka

Część 14: Struktury i klasy - Podstawy - Wprowadzenie do obiektowej zabawy

Część 15: Struktury i klasy - Dziedziczenie i wirtualność - Czyli o interfejsach oraz dziedziczeniu.

Część 16: Struktury i klasy - Przeładowywanie operatorów - Jak sprawić, żeby nasz typ zachowywał się jak typ

Część 17: Szablony - podstawy - Potężne narzędzie zwiększające elastyczność

Część 18: Lambdy - Takie funkcje, tylko bez nazwy.

Część 19: Dynamiczne zarządzanie pamięcią - new/delete i raw pointery - Jak pisać kod, żeby strzelić sobie w kolano

Część 20: Dynamiczne zarządzanie pamięcią - smart pointery i RAII - Jak pisać kod, żeby nie strzelić sobie w kolano

Część 21: Struktury i klasy - Specjalne konstruktory oraz zasada trzech/pięciu - Czyli o tworzeniu wydajnych, bezpiecznych i działających poprawnie klas

Podsumowanie III - Swój własny vector - Wykorzystując poznane elementy języka, napiszemy własną, podstawową implementację tablicy dynamicznej

std::string - Typ łańcucha znaków typu char

std::to_string - Funkcja konwertująca typ liczbowy na std::string

Konwersja std::string na typ liczbowy - Lista i opis funkcji przeznaczonych do konwersji z std::string do typu liczbowego

std::fstream - Strumień I/O dla plików

std::stringstream - Strumień I/O dla stringów

std::iostream - Bazowa klasa dla strumieni I/O

Manipulatory - Opis manipulatorów dla strumieni

std::array - Tablica statyczna

std::vector - Tablica dynamiczna

std::deque - Podwójnie zakończona kolejka

std::forward_list - Pojedynczo linkowana lista

std::list - Linkowana lista

std::set/std::unordered_set - Posortowany/nieposortowany zbiór unikalnych wartości

std::map/std::unordered_map - Posortowany/nieposortowany zbiór elementów klucz-wartość z unikalnym kluczem

std::multiset/std::unordeded_multiset - Posortowany/nieposortowany Zbiór wartości

std::multimap/std::unordered_multimap - Posortowany/nieposortowany zbiór elementów klucz-wartość

std::stack - Adaptacja stosu

std::queue - Adaptacja kolejki

std::priority_queue - Adaptacja priorytetowej kolejki

std::initializer_list - Lista inicjalizacyjna

std::tuple - Krotka, zbiór wartości różnych typów

std::pair - Para wartości tego samego typu

std::swap - Zamienia wartości dwóch obiektów

std::move oraz prawostronne referencje - Uzyskuje prawostronną referencję

std::hash - Funkcja hashująca

std::unique_ptr - Smart pointer dla obiektu z pojedynczym właścicielem

std::shared_ptr - Smart pointer dla obiektu z wieloma właścicielami

std::weak_ptr - Słaby wskaźnik do obiektu

std::exception - Bazowa klasa dla wyjątku

std::terminate - Funkcja wywoływana w momencie wystąpienia nieobsłużonego wyjątku, lub w celu zamknięcia programu

Biblioteka <chrono> - Biblioteka do obsługi czasu

Biblioteka <ctime> - Biblioteka języka C do obsługi czasu

Biblioteka <random> - Generowanie liczb pseudolosowych

std::thread - Wątek

std::sleep_for - Funkcja usypiająca wątek na dany okres

Mutexy i zamki - Obiekty będące w stanie zabezpieczyć wątki przed wyścigiem do danych (data race)

Asynchroniczność - Alternatywa dla wątków

Artykuły

Dlaczego using namespace to zła praktyka? - Opis niebezpieczeństw związanych z nieświadomym używaniem using namespace, oraz alternatywy.

Porównanie szybkości silników generowania liczb pseudolosowych z C++11 - Benchmark silników generowania liczb pseudolosowych z biblioteki <random>, porównanie ich ze starym std::rand i przykład użycia.

Adnotacje

† Poniższy spis przedstawia listę najbardziej użytecznych (według mnie) rzeczy ze standardu języka. Linki prowadzą na zewnętrzny serwis cppreference.com, który jest chyba najsensowniejszą referencją języka C++ dostępną online.

⚠️ **GitHub.com Fallback** ⚠️