0Pricing
C++ Academy · Ders

Vector ve std::array ile C Dizisi Karşılaştırması

Üç sıralı kapsayıcıyı karşılaştırın; boyut, sahiplik ve performansa göre birini seçin

Vector ve std::array ile C Dizisi Karşılaştırması, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

Üç Sıralı Kapsayıcı

C++ bitişik bir diziyi tutmak için üç yol sunar:

  • std::vector — dinamik boyut, öbek depolaması
  • std::array — derleme zamanında sabit boyut, yığın depolaması
  • C tarzı dizi — sabit boyut, düşük düzeyli

C Tarzı Diziler

En eski biçimdir. Boyut, türün bir parçasıdır. İşlevlere geçirildiğinde işaretçiye dönüşür ve boyutunu kaybeder.

int a[5] = {1, 2, 3, 4, 5};
std::cout << a[2];   // 3

C Tarzı Dizilerle İlgili Sorunlar

Çoğu bağlamda boyutlarını unutur, sınır denetimi yapmaz ve kolayca yanlış kullanılabilirler. Yeni kodlarda std::array veya std::vector kullanmayı tercih edin.

std::array (C++11)

Sabit boyutlu bir dizenin ince bir sarmalayıcısıdır. C dizisiyle aynı performansı sunar; ancak gerçek bir türe ve uygun üye işlevlere sahiptir.

#include <array>
std::array<int, 5> a = {1, 2, 3, 4, 5};
std::cout << a.size();   // 5
std::cout << a.at(2);    // bounds-checked

std::array Yığında Kalır

Vektörün aksine, std::array öğelerini doğrudan depolar. Öbek ayırma işlemi yapılmaz. Boyut, bir şablon parametresidir.

Dinamik Boyut İçin std::vector

Derleme zamanında boyutu bilmiyorsanız veya boyut çalışma zamanında değişecekse std::vector kullanın.

Performans Karşılaştırması

Sabit boyutlar için üçünün de performansı benzerdir. std::vector, işaretçi ve boyut yönetimi için küçük bir ek yükün yanı sıra bir dolaylı erişim daha getirir.

İşlevlere Geçirme

Kopyaları önlemek için vektörü veya std::array'i const başvuru olarak geçirin. Ödünç alma sırasında C dizileri std::span ile değiştirilmelidir (C++20).

void process(const std::vector<int>& v);
void process(const std::array<int, 5>& a);

#include <span>
void process(std::span<const int> data);  // accepts both

std::span (C++20)

Bitişik bir dizi üzerinde sahiplik taşımayan bir görünümdür. İşaretçi ve uzunluk çiftine benzer. Vektörleri, std::array nesnelerini ve C dizilerini aynı biçimde kabul eder.

Hangisini Ne Zaman Seçmeli

Karar ağacı:

  • Dinamik boyut gerekiyorsa → std::vector
  • Sabit boyut ve ayırma gerekmiyorsa → std::array
  • Sahiplik almadan ödünç alma gerekiyorsa → std::span
  • C koduyla birlikte çalışabilirlik gerekiyorsa → C dizisi

Aralarında Dönüştürme

Aralıkları veya algoritmaları kullanarak türler arasındaki öğeleri kopyalayabilirsiniz.

std::array<int, 3> a = {1, 2, 3};
std::vector<int> v(a.begin(), a.end());
int c[3];
std::copy(a.begin(), a.end(), c);

Hızlı Kontrol

Öğeleri yığında depolayan ve boyutu derleme zamanında bilinen kapsayıcı hangisidir?

Özet

Dinamik boyut için std::vector, sabit boyut için std::array kullanmayı tercih edin. C tarzı diziler, modern kodlarda nadiren en iyi seçimdir. Bir diziyi sahiplenmeden ödünç almak için std::span kullanın.

Sıkça Sorulan Sorular

“Vector ve std::array ile C Dizisi Karşılaştırması” dersi ücretsiz mi?

Evet — “Vector ve std::array ile C Dizisi Karşılaştırması” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“Vector ve std::array ile C Dizisi Karşılaştırması” dersinde ne öğreneceğim?

Üç sıralı kapsayıcıyı karşılaştırın; boyut, sahiplik ve performansa göre birini seçin C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Vector ve std::array ile C Dizisi Karşılaştırması” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. std::vector Temelleri: push_back, size, capacity
  2. Vektörler Üzerinde Yineleme: indis, range-for, yineleyiciler
  3. Vektörleri Değiştirme: insert, erase, clear
  4. Vector ve std::array ile C Dizisi Karşılaştırması
← C++ Academy Sayfasına Dön