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++ vektörler

C++ dilinde “vektör” genellikle std::vector sınıfı ile temsil edilen dinamik bir dizi (dynamic array) veri yapısıdır. Vektörler, C++’ın Standard Template Library (STL) kısmında yer alır ve çok kullanışlıdır çünkü boyutları çalışma zamanında değiştirilebilir.

Vektör Kütüphanesini Dahil Etme: İlk adım, vector sınıfını kullanabilmek için gerekli başlık dosyasını (#include <vector>) dahil etmektir.

   #include <vector>

Vektör Oluşturma: Bir vektör oluşturmak için, belirli bir veri türü için bir vektör tanımlayabilirsiniz. Örneğin, bir tamsayı vektörü oluşturmak için:

   std::vector<int> integerVector;

Eleman Ekleme: Vektöre eleman eklemek için push_back fonksiyonunu kullanabilirsiniz. Örneğin:

   integerVector.push_back(42);

Eleman Sayısı: Vektörün eleman sayısını size() fonksiyonu ile öğrenebilirsiniz.

   int size = integerVector.size();

Eleman Erişimi: Elemanlara erişmek için indeks kullanabilirsiniz. İndeks 0’dan başlar. Örneğin, vektörün ikinci elemanına erişmek için:

   int secondElement = integerVector[1];

Lütfen dikkat, geçerli bir indeks kullanmaya dikkat edin, aksi takdirde “out of range” hataları oluşabilir. Güvenli bir erişim sağlamak için at() fonksiyonunu kullanabilirsiniz.

Eleman Silme: Bir elemanı silmek için erase veya son elemanı kaldırmak için pop_back kullanabilirsiniz.

   integerVector.erase(integerVector.begin() + index); // Belirli bir indeksi silme
   integerVector.pop_back(); // Son elemanı silme

Vektörün Temizlenmesi: Vektörü tamamen temizlemek için clear fonksiyonunu kullanabilirsiniz.

   integerVector.clear(); // Tüm elemanları temizle

Bu, C++ vektörlerini temel düzeyde kullanmanın birkaç yoludur. Vektörler, birçok başka işlevselliğe sahip ve çeşitli veri türleriyle kullanılabilirler.