Vec<T> tanımı
- Rust kursu
- Başlangıç
- Ders 94/115
- 4 dk
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
fn main() {
// buraya yaz
}Örnek çözüm
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
let sifirlar = vec![0____4]; // [0, 0, 0, 0]
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 |