C ++ massivləri

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Array oxşar Nesnələrin toplusudur

Bir sıra Tamsayılar, Simvollar, Sətirlər, hər hansı bir istifadəçi tərəfindən müəyyən edilmiş növlər və s. Ola bilərik. Hər hansı bir kolleksiyaya (Tamsayılar, Simvollar, Sətirlər və s.) Bir sıra ola bildiyimiz üçün, ümumi bir şəkildə massiv deyə bilərik oxşar obyektlərin toplusu.

Diziler ölçüdə sabitlənir

Bir sıra elan etdikdən sonra massivin ölçüsünü dəyişə bilmərik. Bu o deməkdir ki, bir massivin ölçüsünü kiçiltmək və ya böyütmək olmaz.

Bir sıra elementləri yaddaşa uyğun olaraq ayrılacaqdır

Bir sıra yaratdığımızda bir sıra hər bir element bitişik yaddaş yerlərində ayrılacaqdır.

Bitişik yaddaş yerləri bir sıra ilk elementindən dərhal sonra ikinci elementin yaddaşda olacağı deməkdir. Və ikinci elementdən dərhal sonra üçüncü element iştirak edəcək və s.

Bütün elementlər arxa yerə yaddaş yerlərində ayrılacaqdır.

Bir sıra birinci element ən aşağı ünvana və son element ən yüksək ünvana sahib olacaqdır.

Bir sıra elementlərinə bir indeks daxil olur

Bir sıra elementlərinə bir indeks daxil olur. Birinci element 0, ikinci element 1, üçüncü indeks 2 və s. Son element indeksə (n-1) sahib olacaq, burada n bir massivdəki elementlərin sayıdır.

  • Array oxşar obyektlərin toplusudur?
  • Diziler ölçüdə sabitləşib?
  • Bir sıra elementləri yaddaşa uyğun olaraq ayrılacaqmı?
  • Dizinin elementlərinə indeks daxil olurmu?

Yuxarıda göstərilən sualların hamısına YES demisinizsə, onda bir sıra tərifi olacaqdır

Bir sıra, indekslə daxil olanlara uyğun olaraq saxlanılan oxşar obyektlərin sabit bir toplusudur

Array bəyanatı

Massivlərin elanında aşağıdakı sintaksis istifadə olunur:

elements_type name_of_array [ number_of elements]

Dizinin bəyannaməsinə bəzi nümunələr:
//declare an array of 100 elements of the type int
int myIntArray[100];
//declare an array of 5 elements of the type double
double myDoubleArray[5];

Bir sıra elan etdiyiniz zaman Yaddaşda yaddaşın ayrılması baş verir. Dizinin yaddaş düzümü bitişikdir. Massivin identifikatoru (onun “adı”) massivin yaddaşdakı başlanğıc adresidir. İkiqat myDoubleArray [5] massivinin yaddaş düzeni aşağıdakı şəkil ilə göstərilə bilər

Pin

Dizinin hər bir "hüceyrəsi" ikiqat ölçüyə malikdir. Yadda saxlamalısınız ki, massivin nömrəsi 0 ilə başlayır və elementlərin sayı ilə bitər - 1.
Bildirilmiş massivdən istifadə etmək üçün onu başlanğıc vəziyyətinə gətirməlisiniz.

Array başlatma

Bir sıra işə salmağın bir neçə yolu var:

    1. Kvadrat mötərizə ilə bir ifadə istifadə edərək:

int anotherIntArray[3] = { 1, 2, 5, 7 };

    1. Bir massivi bu şəkildə başlatsanız, bəyannamədə massivin ölçüsünü buraxa biləcəksiniz:

int anotherIntArray[] = { 1, 2, 5, 7 };

Dizinin ölçüsü elementlərin sayına görə avtomatik olaraq təyin ediləcəkdir. Bu sıra 4 ölçülü olacaq.

Dizinin elementlərinə giriş

Dizinin elementlərinə birbaşa giriş. Elementlərə daxil olmaq üçün sıra indekslərindən istifadə etməklə edilə bilər.

Bir sıra ilə işləməli olduğunuzda, sıra elementlərinə daxil olmalısınız. Dizinin adı ilə mötərizədə elementin indeksindən istifadə etməklə edilə bilər. İndeks elementin massivdəki mövqeyidir. Başqa sözlə, indeks elementin massivin başlanğıcına nisbətən ofsetidir. Dizidəki elementlərin sayı 0 ilə başlayır, buna görə bir massivin ilk elementi 0-a malikdir. Budur yaddaş düzümü və ikiqat tipli 5 elementdən ibarət bir sıra indeksləri:

Pin

Bu, bir döngədə bir sıra elementlərinə giriş nümunəsidir:

//display all values of an array in a loop
for (int i = 0; i < 4; ++i)
cout << "Element with index " << i <<" is "<< anotherIntArray[i] << endl;

Bu döngə indeks i istifadə edərək elementə daxil olur. Çıxışa nəzər yetirin:

İndeks 0 olan element 1-dir
İndeks 1 olan element 2-dir
İndeks 2 olan element 5-dir
İndeks 3 olan element 7-dir

İndeks üçün mənfi rəqəm istifadə edə bilməzsiniz. Ayrıca, dizinin ölçüsündən çox olan indeksdən istifadə edə bilməzsiniz - 1. Bunu etməyə çalışarsanız, massivinizin yaxınlığında yerləşən bir hissəyə çatacaqsınız. Proqramınız üçün tamamilə ölümcül nəticələr verə bilər.

Arrayın bir işə keçməsi

Dizinizi bir funksiyaya ötürə bilərsiniz. Bir funksiyanı bir sıra ötürmək üçün onu parametrlər siyahısına əlavə etməlisiniz. Bu, bir sıra arqument kimi qəbul edən sadə bir iş nümunəsidir:

void passArray(int arr[], int size)
{
	for(int i = 0; i != size; ++i)
		cout << "Array[" << i << "] = " << arr[i] << endl;
}

Parametrlərlə bu funksiyanı çağırmaq üçün sıranı sadə bir parametr kimi ötürmək kifayətdir:
passArray(anotherIntArray, 4);

Bir işdən Array qayıt

Bir funksiyanı bir sıra qaytarmaq imkanı var. Ancaq göstəricilər istifadə edilərək müzakirə olunur İşarəni İşdən Array-a qaytarın.

Çoxölçülü Array

C ++ çoxölçülü bir sıra yaratmağa imkan verir. Çoxölçülü bir sıra da elementləri olan bir sıradır. Çoxölçülü bir sıra üçün sadə bir nümunə bir matrisi təmsil edən 2 ölçülü bir sıradır. Bu massivdə elementlər 1 ölçülü massivdir. Çoxölçülü dizinin elanı üçün aşağıdakı sintaksisdən istifadə etməlisiniz.

elements_type name_of_array [ number_of elements1] [ number_of elements2]… 
[ number_of elementsN]

Bu, N ölçülü bir sıra ifadəsidir. Proqramlarınızda əsasən 2 və ya 3 ölçülü massivlərdən istifadə edəcəksiniz.

2B massivlər

2B massivlər matrisi təmsil edir. Massivdəki hər hansı bir element üçün kvadrat mötərizədəki ilk indeks satır sayı, ikinci indeks isə həmin elementin sütun sayıdır. Aşağıdakı şəkildə bir 2D sıra elan edə bilərsiniz:

//2d array of ints
int array2D[3][2];

Bu bəyannamə 3 satır və 2 sütunlu bir sıra elan etdiyiniz deməkdir. Bu massivi aşağıdakı şəkildə təsəvvür edə bilərsiniz:

Pin

2B-lik bir sıra olsa da, yuxarıdakı bu sıra üçün yaddaş düzümü bitişik olacaq:

Pin

2 ölçülü massivə giriş nümunəsi:

//initialize 2D array:
for (int i = 0; i < 3; ++i)
	for (int j = 0; j < 2; ++j)
		array2D[i][j] = i + j;
//display 2d array
for (int i = 0; i < 3; ++i){
	for (int j = 0; j < 2; ++j)
		cout << array2D[i][j] << "  " ;
	cout << endl;

2D massivini göstərmək üçün nəticə:

0 1
1 2
2 3

3D sıra

3D array 3 indeksli bir massivdir:

//3d array of ints
int array3D[3][5][4];

3D massivinin nə olduğunu təsəvvür etməyin bir neçə yolu var. Bir kitab olaraq 3D bir sıra təsəvvür etməyinizi tövsiyə etmək istərdik masaları hər səhifədə eyni sayda satır və sütunla. Bu vəziyyətdə birinci indeks səhifə sayı, ikinci indeks səhifədəki satır sayı, üçüncüsü isə səhifədəki sütun sayıdır:

Pin

3D massivinin işə salınması:

	
for (int i = 0; i < 3; ++i)
	for (int j = 0; j < 5; ++j)
		for (int k = 0; k < 4; ++k)
			array3D[i][j][k] = i + j - k;

Bütün massivlərdə olduğu kimi 3d massivlər üçün yaddaş düzümü bitişikdir.

Bu massivi aşağıdakı şəkildə çap edə bilərsiniz:

for (int i = 0; i < 3; ++i){
	cout << "Page #" << i << endl;
	for (int j = 0; j < 5; ++j)
	{
		for (int k = 0; k < 4; ++k)
			cout << array3D[i][j][k] << " ";
		cout << endl;
	}
}

3B sıra üçün nəticə:

Səhifə #0
0 -1 -2 -3
1 0 -1 -2
2 1 0 -1
3 2 1 0
4 3 2 1
Səhifə #1
1 0 -1 -2
2 1 0 -1
3 2 1 0
4 3 2 1
5 4 3 2
Səhifə #2
2 1 0 -1
3 2 1 0
4 3 2 1
5 4 3 2
6 5 4 3

Gördüyünüz kimi, 3B sıra 2D massivdən ibarətdir.

Crack Sistemi Dizayn Müsahibələri
Translate »