C ++ массивтері


Массив - ұқсас нысандардың жиынтығы

Бізде бүтін сандар жиыны, символдар, жолдар, кез-келген пайдаланушы анықтайтын типтер және т.с.с. болуы мүмкін, өйткені біз жиымның кез-келген түрін (бүтін сандар, символдар, жолдар, т.б.) ала аламыз, сондықтан жалпы жолмен массив деп атай аламыз. ұқсас нысандардың жиынтығы.

Массивтер өлшемі бойынша бекітілген

Массивті жариялағаннан кейін біз массивтің өлшемін өзгерте алмаймыз. Бұл біз массивтің көлемін кішірейте де, көбейте де алмаймыз дегенді білдіреді.

Массивтің элементтері жадында тұрақты бөлінеді

Массивті құрған кезде массивтің әрбір элементі жадының жақын орналасқан жерлеріне бөлінеді.

Жадтың сабақтас орналасуы массивтің бірінші элементінен кейін екінші элементтің жадта болатынын білдіреді. Екінші элементтен кейін үшінші элемент қатысады және т.б.

Барлық элементтер жад орындарында бірінен соң бірі бөлінеді.

Массивтің бірінші элементінің адресі ең төменгі, ал соңғы элементінің адресі жоғары болады.

Массив элементтеріне индекс арқылы қол жеткізіледі

Массив элементтеріне индекс арқылы қол жеткізіледі. Бірінші элементтің индексі 0, екінші элементтің индексі 1, үшіншінің индексі 2 және т.б. болады. Соңғы элементтің индексі болады (n-1), онда n - массивтегі элементтер саны.

  • Массив ұқсас нысандардың жиынтығы ма?
  • Массивтер өлшемі бойынша бекітілген бе?
  • Массивтің элементтері жадта тұрақты орналасады ма?
  • Массив элементтеріне индекс қол жетімді ме?

Егер сіз жоғарыдағы барлық сұрақтарға ИӘ деп айтсаңыз, онда жиымның анықтамасы болады

Массив - индекс арқылы қол жететін, ұқсас сақталған ұқсас объектілердің тұрақты жиынтығы

Массив декларациясы

Массивтің декларациясы келесі синтаксисті қолданады:

elements_type name_of_array [ number_of elements]

Массивті жариялаудың бірнеше мысалдары:
//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];

Массивті жариялаған кезде жадыны бөлу Stack жадында болады. Массивтің жадының орналасуы сабақтас. Массивтің идентификаторы (оның «атауы») - бұл массивтің жадтағы басталатын адресі. MyDoubleArray [5] массивінің жадының орналасуын келесі сурет арқылы көрсетуге болады

Массивтің кез-келген «ұяшығының» екі еселенген мөлшері бар. Массивтің нөмірленуі 0-ден басталып, элементтер санымен аяқталатындығын есте ұстау керек - 1.
Жарияланған жиымды қолдану үшін оны инициализациялау керек.

Массивтің инициализациясы

Массивті инициализациялаудың бірнеше әдісі бар:

    1. Төрт жақшаның көмегімен бір сөйлемді қолдану арқылы:

int anotherIntArray[3] = { 1, 2, 5, 7 };
    1. Егер сіз массивті осылай инициализацияласаңыз, онда сіз декларацияда массивтің өлшемін алып тастай аласыз:

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

Массивтің өлшемі элементтер санына сәйкес автоматты түрде орнатылады. Бұл жиым 4 өлшемді болады.

Массив элементтеріне қол жеткізу

Массив элементтеріне тікелей қол жеткізу. Оны элементтерге қол жеткізу үшін массивтің индекстерін қолдану арқылы жасауға болады.

Массивпен жұмыс істеу керек болғанда, массив элементтеріне қол жеткізу керек. Массивтің аты бар жақшаның ішіндегі элементтің индексін қолдану арқылы жасауға болады. Индекс - бұл массивтегі элементтің орны. Басқаша айтқанда, индекс - бұл массивтің басталуына қатысты элементтің ығысуы. Массивтегі элементтердің нөмірленуі 0-ден басталады, сондықтан массивтің бірінші элементінде 0 индексі болады. Мұнда жадының орналасу мысалы және екі типті 5 элементтен тұратын жиым индекстері келтірілген:

Бұл циклдегі жиым элементтеріне қол жеткізудің мысалы:

//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;

Бұл цикл i индексінің көмегімен элементке қол жеткізеді. Шығарылымға көз салыңыз:

0 индексі бар элемент - 1
1 индексі бар элемент - 2
2 индексі бар элемент - 5
3 индексі бар элемент - 7

Индекс үшін теріс санды қолдануға болмайды. Сіз массивтің өлшемінен үлкен индексті қолдана алмайсыз - 1. Егер сіз мұны жасасаңыз, онда сіз өзіңіздің массивіңіздің жанында орналасқан жадтың бір бөлігіне қол жеткізесіз. Ол сіздің бағдарламаңыз үшін өлімге әкелетін нәтиже бере алады.

Массивті функцияға беру

Сіз өзіңіздің массивіңізді функцияға жібере аласыз. Массивті функцияға жіберу үшін оны параметрлер тізіміне қосу керек. Бұл массивті аргумент ретінде қабылдайтын функцияның қарапайым мысалы:

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

Бұл функцияны параметрлермен шақыру үшін жай параметр ретінде массивті жіберіңіз:
passArray(anotherIntArray, 4);

Массивті функциядан қайтару

Функциядан массивті қайтару мүмкіндігі бар. Бірақ бұл көрсеткіштерді қолдану арқылы жасалады және талқыланады Функциядан көрсеткішті массивке қайтару.

Көпөлшемді массив

C ++ көп өлшемді массив құруға мүмкіндік береді. Көпөлшемді массив - бұл элементтер де бар массив. Көп өлшемді массивтің қарапайым мысалы ретінде матрицаны білдіретін 2 өлшемді массивті айтуға болады. Бұл жиым элементтері 1 өлшемді массивтен тұрады. Массивтің көп өлшемді жариялануы үшін келесі синтаксисті қолдану керек:

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

Бұл N өлшемді жиымның декларациясы. Негізінен сіз бағдарламаларыңызда 2 немесе 3 өлшемді массивтерді қолданасыз.

2D массивтер

2D массивтер матрицаны білдіреді. Массивтің кез-келген элементі үшін квадрат жақшаның бірінші индексі жол саны, ал екінші индексі сол элементтің баған саны болып табылады. Сіз 2D массивін келесі түрде жариялай аласыз:

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

Бұл декларация 3 жолдан және 2 бағаннан тұратын жиынды жариялауыңызды білдіреді. Сіз бұл массивті келесі түрде елестете аласыз:

Бұл 2D массив болса да, бірақ жоғарыдағы массивтің жадының орналасуы өзара сабақтас болады:

2 өлшемді массивке қол жеткізудің мысалы келтірілген:

//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 массивін көрсетуге арналған нәтиже:

0 1
1 2
2 3

3D массив

3D массив - бұл 3 индексі бар массив:

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

3D массивтің не екенін елестетудің бірнеше әдісі бар. Сізге 3D массивін әр парақта жолдары мен бағандары бірдей кестелер кітабы ретінде елестетуді ұсынамыз. Бұл жағдайда бірінші индекс - парақ саны, екінші индекс - парақтағы жол саны, үшіншісі - парақтағы баған саны:

3D массивін инициализациялау:

	
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;

Барлық массивтер сияқты 3-ші массивтерге арналған жад схемасы сабақтас.

Сіз бұл жиымды келесі жолмен басып шығара аласыз:

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;
	}
}

3D массивінің шығысы:

Бет #0
0 -1 -2 -3
1 0 -1 -2
2 1 0 -1
3 2 1 0
4 3 2 1
Бет #1
1 0 -1 -2
2 1 0 -1
3 2 1 0
4 3 2 1
5 4 3 2
Бет #2
2 1 0 -1
3 2 1 0
4 3 2 1
5 4 3 2
6 5 4 3

Көріп отырғаныңыздай, 3D массиві - бұл 2D массивтерінің жиымы.