C++ vektör ve liste farkları

C++ dilinde vektör ve liste, iki farklı veri yapısıdır ve her birinin avantajları ve dezavantajları vardır. İşlevsellikleri benzer olsa da, içerdikleri veri yapıları ve performans karakteristikleri farklıdır.

C++ vektör ve liste arasındaki bazı temel farklar:

  1. Veri Yapısı:
  • Vektör (Vector): Dinamik bir dizi olarak çalışır. Bellekte ardışık olarak depolanan bir dizi elemandan oluşur.
  • Liste (List): Çift yönlü bağlı liste olarak çalışır. Her bir eleman, kendisinden önceki ve sonraki elemanı işaret eden bağlantılara sahiptir.
  1. Bellek Yerleşimi:
  • Vektör: Elemanlar ardışık bellek bölgelerine saklanır, bu nedenle elemanlara doğrudan erişim daha hızlıdır.
  • Liste: Her eleman, bağlı olduğu önceki ve sonraki elemanları gösteren işaretçilere sahiptir, bu nedenle rastgele erişim daha yavaş olabilir.
  1. Ekleme ve Silme İşlemleri:
  • Vektör: Eleman eklemek veya çıkarmak maliyetli olabilir, çünkü bu işlemler ardışık bellek bölgelerinde yapıldığından, elemanların taşınması gerekebilir.
  • Liste: Ekleme ve çıkarma işlemleri daha hızlıdır çünkü sadece bağlantıları güncellemek yeterlidir. Ancak, rastgele erişim daha yavaş olabilir.
  1. İterasyon (Döngü) Performansı:
  • Vektör: Ardışık bellek bölgelerinde depolandığı için, elemanlara doğrudan erişim sağlamak için daha etkilidir.
  • Liste: Her elemanın bağlı olduğu önceki ve sonraki elemanları takip etmek için dolaşmak gerektiğinden dolayı vektörden daha yavaş olabilir.
  1. Bellek Kullanımı:
  • Vektör: Bellek kullanımı daha etkin olabilir çünkü elemanlar ardışık bellek bölgelerinde depolanır.
  • Liste: Her elemanın bağlantıları için ek bellek kullanımı gerektiği için, vektöre kıyasla daha fazla bellek kullanabilir.

Hangi veri yapısının kullanılacağı, uygulama ihtiyaçlarına ve yapılan işlemlerin türüne bağlıdır. Genel olarak, vektör rastgele erişim ve bellek etkinliği gerektiren durumlar için daha uygundur, while liste özellikle sık ekleme ve çıkarma işlemleri gerektiren durumlar için daha uygundur.

C++ çok boyutlu diziler

C++ programlama dilinde çok boyutlu diziler, birden fazla boyuta sahip dizilerdir. Genellikle 2D matrisler (2 boyut) veya çok boyutlu verileri temsil etmek için kullanılırlar. Çok boyutlu dizileri oluşturmak ve kullanmak için C++ dilindeki dizi ve döngü yapılarını kullanabilirsiniz.

İki boyutlu bir dizi oluşturma

#include <iostream>
using namespace std;

int main() {
    int matris[3][3]; // 3x3'lük bir matris tanımla
    // Matrisi doldur
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            matris[i][j] = i * 3 + j;
        }
    }
    // Matrisi yazdır
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            cout << matris[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

Üç boyutlu bir dizi oluşturma

#include <iostream>
using namespace std;

int main() {
    int cubuk[2][3][4]; // 2x3x4'lük üç boyutlu bir dizi tanımla
    // Diziyi doldur
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            for (int k = 0; k < 4; k++) {
                cubuk[i][j][k] = i * 12 + j * 4 + k;
            }
        }
    }
    // Diziyi yazdır
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            for (int k = 0; k < 4; k++) {
                cout << cubuk[i][j][k] << " ";
            }
            cout << endl;
        }
    }
    return 0;
}

Bu örneklerde, iki boyutlu ve üç boyutlu dizilerin nasıl tanımlandığını, doldurulduğunu ve erişildiğini görebilirsiniz. Çok boyutlu diziler, çoklu endeksler kullanarak elemanlara erişmeye imkan tanır. Boyut sayısı arttıkça, kodun karmaşıklığı da artar.

C++ diziler

C++ programlama dilinde diziler, aynı türden verileri depolamak için kullanılan veri yapılarıdır. Bir dizi, bir veya daha fazla elemanı içeren bir koleksiyondur, ve her eleman, bir dizide benzersiz bir indeks kullanılarak erişilebilir.

  1. Dizi Tanımlama:
    C++ dizileri, aynı türden elemanlar içeren bir koleksiyonu tanımlamak için kullanılır. Dizi tanımlanırken elemanların türü ve dizinin boyutu belirtilmelidir. Örnek bir dizi tanımı:
   int sayilar[5]; // 5 elemanlı bir tamsayı dizisi
  1. Dizi Elemanlarına Erişim:
    Dizi elemanlarına indeks kullanarak erişebilirsiniz. İndeksler sıfırdan başlar. Örneğin, ilk elemana erişmek için 0 indeksi kullanılır:
   sayilar[0] = 42; // İlk elemana değer atama
   int deger = sayilar[2]; // 3. elemanın değerini al
  1. Dizi Boyutu:
    Dizinin boyutu, tanımlandığı zaman belirlenir ve daha sonra değiştirilemez. Dizi boyutunu aşan bir indekse erişmeye çalışmak hatalara yol açabilir.
  2. Dizi İnitializasyonu:
    Dizi, tanımlandığı anda belirli bir başlangıç değeri ile başlatılabilir:
   int sayilar[3] = {10, 20, 30}; // Dizi başlangıç değerleriyle tanımlandı
  1. Dizi Boyutunu Hesaplama:
    sizeof operatörü kullanılarak bir dizinin boyutu (bayt cinsinden) hesaplanabilir:
   int boyut = sizeof(sayilar) / sizeof(sayilar[0]); // Dizi boyutu
  1. Döngüler ve Diziler:
    Döngüler (for, while, vb.) kullanılarak diziler üzerinde işlem yapabilirsiniz. Bu, diziyi dolaşmak ve elemanlarını işlemek için yaygın bir yöntemdir.

Örnek bir C++ programı, bir dizi tanımlama ve elemanlarına erişme işlemini gösterebilir:

#include <iostream>

int main() {
    int sayilar[5] = {10, 20, 30, 40, 50};

    for (int i = 0; i < 5; i++) {
        std::cout << "Eleman " << i << ": " << sayilar[i] << std::endl;
    }

    return 0;
}

Bu program, bir 5 elemanlı bir tamsayı dizisi tanımlar, elemanlara erişir ve her elemanın değerini ekrana yazdırır.