CodeBlanks Logo Icon CodeBlanks

Vec<T> tanımı

Vec<T> ile dinamik boyutlu dizi oluşturmayı öğrenirsin.

Vec<T> tanımı

Vec<T>, aynı türden değerleri ardışık olarak tutan, boyutu çalışma anında büyüyüp küçülebilen bir koleksiyondur. Elemanlar heap'te durur; vektörün kendisi (işaretçi, uzunluk, kapasite) stack'tedir:

let bos: Vec<i32> = Vec::new();   // tür belirtilmeli
let sifirlar = vec![0; 4];        // [0, 0, 0, 0]
let sayilar = vec![1, 2, 3];      // tür çıkarılır: Vec<i32>

Boş bir vektörde eleman olmadığı için derleyici türü tahmin edemez; ya açıkça yazarsın ya da sonraki kullanımdan çıkarılır.

Dizi mi, vektör mü?

Dizi ([i32; 3]) sabit boyutludur ve stack'te durur; boyut türün parçasıdır. Vektör ise büyüyebilir. Boyut derleme anında biliniyor ve değişmeyecekse dizi, aksi halde vektör kullan:

let aylar = ["Oca", "Şub", "Mar"];      // [&str; 3]
let mut notlar = Vec::new();
notlar.push(85);                         // Vec<i32>

İkisi de &[T] dilimine dönüşür; bu yüzden dilim alan fonksiyonlar ikisiyle de çalışır.

Uygulama Vektör oluştur

Üç vektör oluştur: boş bir Vec<i32> (Vec::new()), vec![0; 4] ve vec![1, 2, 3]. Boş vektörün uzunluğunu ve diğer ikisini {:?} ile tek satırda yazdır.

Başlangıç kodu

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
fn main() {
    let bos: Vec<i32> = Vec::new();
    let sifirlar = vec![0; 4];
    let sayilar = vec![1, 2, 3];
    println!("{} {:?} {:?}", bos.len(), sifirlar, sayilar);
}

Beklenen çıktı

0 [0, 0, 0, 0] [1, 2, 3]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>vec![7; 3]</code> nedir?

  • [3, 3, 3, 3, 3, 3, 3]
  • [0, 1, 2]
  • [7, 7, 7] Doğru cevap
  • [7, 3]

Açıklama: vec![değer; adet] aynı değerden belirtilen sayıda eleman üretir.

2 Tekrarlı vektör

Soru
let sifirlar = vec![0____4];   // [0, 0, 0, 0]
Cevap
let sifirlar = vec![0;4];   // [0, 0, 0, 0]

Açıklama: vec![değer; adet] sözdiziminde ayraç noktalı virgüldür.

3 İfade ve sonuç

Kavram Anlamı
Vec::<i32>::new() []
vec![0; 4] [0, 0, 0, 0]
vec![1, 2, 3].len() 3
[1, 2, 3] Dizi, sabit boyut

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma