Array’ler bellekte ardışık bir şekilde tutulan dizinle/indeksle erişilebilen bir veri yapısıdır.
- X bytelık bir türün/tipin N elemanı için : X*N bytelık yer kaplar
- Elemanlar bellekte ardışık şekilde tutulur.
- Elemanlara random access yapılabilir.
- Çok boyutlu olabilir ama bellekte her zaman tek boyutlu gibi saklanır. Sadece erişim esnasında matematiksel olarak 2D şeklinde erişilir.
#include <iostream>
using namespace std;
int main() {
int A[5]; // Stackta 5 integerlık bir dizi oluşturduk
// Dizinin içini değerlerle doldurduk
for (int i = 0; i < 5; i++) {
A[i] = i * 2;
}
// Yazdırdık
cout << "Dizinin ve ilk elemaninin adresi aynidir:" << endl;
cout << "A :\t" << A << endl;
cout << "&A[0]:\t" << &A[0] << endl;
cout << endl << "Dizinini tum elemanlari ve adresleri:" << endl;
for (auto& i : A)
cout << "- "<<i << "\t" << &i << endl;
cout << endl;
// iki boyutlu bir integer dizi oluşturduk
int B[3][5];
// Değerler atadık
for (int i = 0; i < 3; i++)
for (int j = 0; j < 5; j++)
B[i][j] = i + j;
// İki boyutlu bir dizi oluşturmanin ikinci yolu
int *C[3]; // int* array // stack
C[0] = new int[5]; // int array heap
C[1] = new int[5]; // int array heap
C[2] = new int[5]; // int array heap
// İki boyutlu bir dizi oluşturmanın üçüncü yolu
int** D; // pointera point eden bir pointer.!? // stack
D = new int* [3]; // int* array heap
D[0] = new int[5]; // int array heap
D[1] = new int[5]; // int array heap
D[2] = new int[5]; // int array heap
}
2D array indeksinin formülü:
A[i][j]'nin~gerçek~indeksi\\ \Downarrow \\i*bir~satırın~byte~cinsinden~büyüklüğü+j
3 veya daha yüksek boyutlu arrayler için de benzer kurallar geçerlidir.
Çok boyutlu array’lerde satır veya sütun öncelikli dizilim olabilir. Bu durum array üzerindeki elemanların erişim hızlarını değiştirir. Farklı işler için farklı dizilimler daha iyidir fakat bu genelde dil seviyesinde olan bir iş olduğu için yapılabilecek pek bir şey yok.
Leave a Reply