C++ Hile Sayfası
Son güncelleme
Hello World ve program yapısı
Çalışma, bir int döndüren main'de başlar.
| Element | Kod |
|---|---|
| Bir başlık ekle (include) | #include <iostream> |
| Giriş noktası | int main() { ... } |
| Bir satır yazdır | std::cout << "Hello, World!" << std::endl; |
| Girdi oku | std::cin >> x; |
| std ad alanını kullan | using namespace std; |
| Başarıyı döndür | return 0; |
| Yorumlar | // line ve /* block */ |
Veri tipleri
| Tip | Açıklama |
|---|---|
int | Tam sayı (genellikle 32 bit) |
long / long long | Daha geniş tam sayılar |
float / double | Kayan noktalı sayılar |
char | Tek bayt / karakter |
bool | true veya false |
std::string | <string>'ten dinamik metin |
auto | Derleyici tipi çıkarır |
std::size_t | Boyutlar ve indeksler için işaretsiz tip |
Değişkenler ve referanslar
Referanslar takma adlardır; işaretçiler adresleri tutar.
| İşlem | Söz dizimi |
|---|---|
| Tanımla ve ilk değer ata | int x = 5; |
| Süslü parantezle ilk değer atama | int x{5}; |
| Sabit | const double PI = 3.14159; |
| Derleme zamanı sabiti | constexpr int N = 10; |
| Referans (takma ad) | int &r = x; |
| İşaretçi | int *p = &x; |
| Bir işaretçinin değerine eriş | *p = 10; |
| Tip çıkarımı | auto y = 3.14; |
Kontrol akışı
| İfade | Söz dizimi |
|---|---|
| If / else | if (x > 0) { ... } else { ... } |
| Switch | switch (n) { case 1: ...; break; default: ...; } |
| While döngüsü | while (i < n) { ... } |
| Do-while döngüsü | do { ... } while (i < n); |
| For döngüsü | for (int i = 0; i < n; i++) { ... } |
| Aralık tabanlı for | for (auto x : vec) { ... } |
| Referansla aralık tabanlı | for (auto &x : vec) { ... } |
| Break / continue | break; bir döngüden çıkar, continue; bir sonraki yinelemeye atlar |
Fonksiyonlar
| İşlem | Söz dizimi |
|---|---|
| Bir fonksiyon tanımla | int add(int a, int b) { return a + b; } |
| Geri dönüş değeri yok | void greet() { ... } |
| Varsayılan argümanlar | int pow(int b, int e = 2) { ... } |
| Referansla geçirme | void inc(int &x) { x++; } |
| Const referans (kopyasız) | void print(const std::string &s) { ... } |
| Aşırı yükleme | int max(int a, int b); ve double max(double a, double b); |
| Lambda | auto f = [](int x) { return x * 2; }; |
| Yakalamalı lambda | auto g = [n](int x) { return x + n; }; |
Sınıflar ve OOP
| İşlem | Söz dizimi |
|---|---|
| Bir sınıf tanımla | class Dog { ... }; |
| Erişim belirteçleri | public:, private:, protected: |
| Üye değişken | std::string name; |
| Yapıcı (constructor) | Dog(std::string n) : name(n) {} |
| Yıkıcı (destructor) | ~Dog() { ... } |
| Üye fonksiyonu | void bark() { ... } |
| Bir nesne oluştur | Dog d("Rex"); |
| Kalıtım | class Puppy : public Dog { ... }; |
| Sanal (virtual) fonksiyon | virtual void speak(); |
STL kapsayıcıları
Standart kütüphaneden yaygın kapsayıcılar.
| Kapsayıcı | Kullanım ve örnek |
|---|---|
std::vector<int> | Dinamik dizi: v.push_back(1); v.size(); |
std::string | Metin: s += "!"; s.length(); |
std::array<int, 3> | Sınır bilgisiyle sabit boyutlu dizi |
std::map<K, V> | Sıralı anahtar-değer: m["a"] = 1; |
std::unordered_map<K, V> | Hash map (daha hızlı arama, sırasız) |
std::set<T> | Sıralı benzersiz değerler: s.insert(5); |
std::pair<A, B> | İki değer: make_pair(1, "x") |
std::queue / std::stack | FIFO kuyruk / LIFO yığın adaptörleri |
STL algoritmaları ve yineleyiciler
<algorithm>'den; çoğu bir begin/end yineleyici aralığı alır.
| İşlem | Söz dizimi |
|---|---|
| Begin / end yineleyicileri | v.begin(), v.end() |
| Sırala | std::sort(v.begin(), v.end()); |
| Azalan sırala | std::sort(v.begin(), v.end(), std::greater<int>()); |
| Bir değer bul | auto it = std::find(v.begin(), v.end(), 5); |
| Eşleşmeleri say | std::count(v.begin(), v.end(), 5); |
| Min / max eleman | std::max_element(v.begin(), v.end()); |
| Bir aralığı topla | std::accumulate(v.begin(), v.end(), 0); |
| Her elemanı dönüştür | std::transform(v.begin(), v.end(), v.begin(), fn); |
Akıllı işaretçiler ve modern C++
Otomatik temizlik için ham new/delete yerine akıllı işaretçileri tercih edin.
| Özellik | Söz dizimi |
|---|---|
| Tekil sahiplik | auto p = std::make_unique<Dog>("Rex"); |
| Paylaşılan sahiplik | auto p = std::make_shared<Dog>("Rex"); |
| Sahiplik içermeyen referans | std::weak_ptr<Dog> w = p; |
| Move semantiği | auto v2 = std::move(v1); |
| Nullptr | int *p = nullptr; |
| Yapılandırılmış bağlamalar | auto [key, val] = *it; |
| İsteğe bağlı değer | std::optional<int> maybe; |
| Şablonlar | template <typename T> T add(T a, T b) { return a + b; } |
En çok başvurduğunuz C++ söz dizimi, STL kapsayıcıları ve modern özellikler tek sayfada. Bu C++ hile sayfası, C++ yazmak için hızlı bir başvurudur - veri tipleri, referanslar, sınıflar, standart kütüphane kapsayıcıları ve algoritmaları ve ham new/delete yerine geçen akıllı işaretçiler.
Buradaki her şey standart C++'tır (C++11 ve sonrası) ve g++ veya clang++ ile derlenir. İhtiyacınız olanı kopyalayın ya da herhangi bir kod parçasını C++ playground'da canlı deneyin - kurmanız gereken bir derleyici yok.
C++ hile sayfası SSS
Bu C++ hile sayfası ücretsiz mi?
Evet. Bu C++ hile sayfası tamamen ücretsizdir ve kayıt gerektirmez. Yer imlerinize ekleyin ve bir söz dizimine, STL kapsayıcısına ya da akıllı işaretçiye bakmanız gerektiğinde geri dönün.
C++'ta işaretçi ile referans arasındaki fark nedir?
*p ile değerine erişirsiniz. Bir referans (int &r = x) mevcut bir değişken için takma addır - tanımlandığında bağlanmalıdır, asla null olamaz veya yeniden bağlanamaz ve değişkenin kendisi gibi kullanılır. Daha temiz referansla geçirme parametreleri için referanslar, isteğe bağlı veya yeniden atanabilir dolaylama gerektiğinde işaretçiler kullanın.new/delete mi yoksa akıllı işaretçiler mi kullanmalıyım?
std::unique_ptr ve std::shared_ptr (make_unique/make_shared ile) kapsam dışına çıktıklarında belleklerini otomatik olarak serbest bırakır; bu da manuel new/delete ile gelen bellek sızıntılarını ve çift serbest bırakmaları önler. Ham new/delete'e yalnızca belirli bir nedeni olan düşük seviyeli kodda başvurun.C++'ı çevrimiçi olarak deneyebilir miyim?
Evet. C++ playground'u açarak bu hile sayfasındaki herhangi bir kod parçasını tarayıcınızda derleyip çalıştırabilirsiniz - kurmanız gereken bir derleyici yok. Yapı istediğinizde, Coddy'nin ücretsiz etkileşimli C++ kursu sizi değişkenler ve döngülerden sınıflara ve STL'ye adım adım götürür.
Bu hile sayfası yeni başlayanlar için uygun mu?
Evet. En yaygın yapı taşlarından (tipler, kontrol akışı, fonksiyonlar) gelişmiş olanlara (STL ve akıllı işaretçiler) doğru düzenlenmiştir, böylece üstteki bölümleri ilk günden kullanabilir ve zamanla geri kalanına geçebilirsiniz.