Menu
Coddy logo textTech

C++ Cheat Sheet: ściąga z C++

Ostatnia aktualizacja

Hello World i struktura programu

Wykonanie zaczyna się w main, która zwraca int.

ElementKod
Dołączenie nagłówka#include <iostream>
Punkt wejściaint main() { ... }
Wypisanie liniistd::cout << "Hello, World!" << std::endl;
Odczyt danych wejściowychstd::cin >> x;
Użycie przestrzeni nazw stdusing namespace std;
Zwrócenie sukcesureturn 0;
Komentarze// line i /* block */

Typy danych

TypOpis
intLiczba całkowita (zwykle 32 bity)
long / long longSzersze liczby całkowite
float / doubleLiczby zmiennoprzecinkowe
charPojedynczy bajt / znak
booltrue lub false
std::stringDynamiczny tekst z <string>
autoKompilator sam ustala typ
std::size_tTyp bez znaku dla rozmiarów i indeksów

Zmienne i referencje

Referencje to aliasy; wskaźniki przechowują adresy.

OperacjaSkładnia
Deklaracja i inicjalizacjaint x = 5;
Inicjalizacja klamrowaint x{5};
Stałaconst double PI = 3.14159;
Stała czasu kompilacjiconstexpr int N = 10;
Referencja (alias)int &r = x;
Wskaźnikint *p = &x;
Dereferencja wskaźnika*p = 10;
Wnioskowanie typuauto y = 3.14;

Sterowanie przepływem

InstrukcjaSkładnia
If / elseif (x > 0) { ... } else { ... }
Switchswitch (n) { case 1: ...; break; default: ...; }
Pętla whilewhile (i < n) { ... }
Pętla do-whiledo { ... } while (i < n);
Pętla forfor (int i = 0; i < n; i++) { ... }
Pętla for po zakresiefor (auto x : vec) { ... }
Pętla po zakresie przez referencjęfor (auto &x : vec) { ... }
Break / continuebreak; wychodzi z pętli, continue; przechodzi do następnej iteracji

Funkcje

OperacjaSkładnia
Definicja funkcjiint add(int a, int b) { return a + b; }
Bez wartości zwracanejvoid greet() { ... }
Argumenty domyślneint pow(int b, int e = 2) { ... }
Przekazanie przez referencjęvoid inc(int &x) { x++; }
Stała referencja (bez kopiowania)void print(const std::string &s) { ... }
Przeciążanieint max(int a, int b); i double max(double a, double b);
Lambdaauto f = [](int x) { return x * 2; };
Lambda z przechwytywaniemauto g = [n](int x) { return x + n; };

Klasy i OOP

OperacjaSkładnia
Definicja klasyclass Dog { ... };
Modyfikatory dostępupublic:, private:, protected:
Pole klasystd::string name;
KonstruktorDog(std::string n) : name(n) {}
Destruktor~Dog() { ... }
Metodavoid bark() { ... }
Utworzenie obiektuDog d("Rex");
Dziedziczenieclass Puppy : public Dog { ... };
Funkcja wirtualnavirtual void speak();

Kontenery STL

Popularne kontenery z biblioteki standardowej.

KontenerZastosowanie i przykład
std::vector<int>Tablica dynamiczna: v.push_back(1); v.size();
std::stringTekst: s += "!"; s.length();
std::array<int, 3>Tablica o stałym rozmiarze ze znanymi granicami
std::map<K, V>Posortowane pary klucz-wartość: m["a"] = 1;
std::unordered_map<K, V>Mapa haszująca (szybsze wyszukiwanie, bez kolejności)
std::set<T>Posortowane unikalne wartości: s.insert(5);
std::pair<A, B>Dwie wartości: make_pair(1, "x")
std::queue / std::stackAdaptery kolejki FIFO / stosu LIFO

Algorytmy i iteratory STL

Z <algorithm>; większość przyjmuje zakres iteratorów begin/end.

OperacjaSkładnia
Iteratory początku / końcav.begin(), v.end()
Sortowaniestd::sort(v.begin(), v.end());
Sortowanie malejącostd::sort(v.begin(), v.end(), std::greater<int>());
Wyszukanie wartościauto it = std::find(v.begin(), v.end(), 5);
Zliczenie wystąpieństd::count(v.begin(), v.end(), 5);
Element minimalny / maksymalnystd::max_element(v.begin(), v.end());
Suma zakresustd::accumulate(v.begin(), v.end(), 0);
Przekształcenie każdego elementustd::transform(v.begin(), v.end(), v.begin(), fn);

Inteligentne wskaźniki i nowoczesny C++

Zamiast surowych new/delete używaj inteligentnych wskaźników, które same sprzątają pamięć.

FunkcjaSkładnia
Wyłączna własnośćauto p = std::make_unique<Dog>("Rex");
Współdzielona własnośćauto p = std::make_shared<Dog>("Rex");
Referencja bez własnościstd::weak_ptr<Dog> w = p;
Semantyka przenoszeniaauto v2 = std::move(v1);
Nullptrint *p = nullptr;
Wiązania strukturalneauto [key, val] = *it;
Wartość opcjonalnastd::optional<int> maybe;
Szablonytemplate <typename T> T add(T a, T b) { return a + b; }

Najczęściej używana składnia C++, kontenery STL i nowoczesne funkcje języka na jednej stronie. Ten C++ cheat sheet to szybka ściąga do pisania w C++: typy danych, referencje, klasy, kontenery biblioteki standardowej, takie jak vector i unordered_map, oraz inteligentne wskaźniki, które zastępują surowe new/delete.

Wszystko tutaj to standardowy C++ (C++11 i nowsze), który kompiluje się w g++ lub clang++. Skopiuj to, czego potrzebujesz, albo uruchom dowolny fragment w edytorze online C++, bez instalowania kompilatora. Uczysz się języka? Darmowy interaktywny kurs C++ w Coddy krok po kroku uczy wskaźników, STL i klas.

C++ cheat sheet: najczęstsze pytania

Czy ten C++ cheat sheet jest darmowy?
Tak. Ta ściąga z C++ jest całkowicie darmowa i nie wymaga rejestracji. Dodaj ją do zakładek i wracaj, gdy potrzebujesz sprawdzić składnię, kontener STL albo inteligentny wskaźnik.
Czym różni się wskaźnik od referencji w C++?
Wskaźnik to zmienna przechowująca adres; może być pusty, można go przestawić na inny obiekt, a dereferencję wykonuje się przez *p. Referencja (int &r = x) to alias istniejącej zmiennej: trzeba ją powiązać przy deklaracji, nigdy nie może być pusta ani wskazywać na coś innego i używa się jej tak jak samej zmiennej. Referencji używaj do czytelnego przekazywania parametrów, a wskaźników, gdy potrzebujesz pośrednictwa opcjonalnego lub zmiennego.
Używać new/delete czy inteligentnych wskaźników?
Wybieraj inteligentne wskaźniki. std::unique_ptr i std::shared_ptr (tworzone przez make_unique/make_shared) same zwalniają pamięć, gdy wychodzą poza zakres, co zapobiega wyciekom i podwójnemu zwalnianiu typowym dla ręcznego new/delete. Po surowe new/delete sięgaj tylko w kodzie niskopoziomowym, gdy jest ku temu konkretny powód.
Czy mogę ćwiczyć C++ online?
Tak. Otwórz edytor online C++, aby skompilować i uruchomić dowolny fragment z tej ściągi w przeglądarce, bez instalowania kompilatora. Gdy chcesz uczyć się bardziej systematycznie, darmowy interaktywny kurs C++ w Coddy prowadzi krok po kroku od zmiennych i pętli do klas i STL.
Czy ta ściąga nadaje się dla początkujących?
Tak. Jest ułożona od najczęstszych elementów (typy, sterowanie przepływem, funkcje) do bardziej zaawansowanych (STL i inteligentne wskaźniki), więc górnych sekcji możesz używać od pierwszego dnia, a resztę poznawać z czasem.
Ilustracja języków programowania w Coddy

Naucz się języka C++ z Coddy

ZACZNIJ