Lecture 9-C++ Arrays
Lecture 9-C++ Arrays
So far in constructing our building we have named each brick (variable). That is fine for a small
number of bricks, but what happens when we want to construct something larger? We would like
to point to a stack of bricks and say, "That's for the left wall. That's brick 1, brick 2, brick 3. . . ."
In C++, Array is an ordered collection of elements of same type.
For example, the following is an array of integers.
• {7, 3, 8, 7, 2}
And the following is an array of strings.
• {"apple", "banana", "cherry"}
Arrays allow us to do something similar with variables. An array is a set of consecutive memory
locations used to store data. Each item in the array is called an element. The number of elements
in an array is called the dimension/length of the array. A typical array declaration is:
// List of data to be sorted and averaged
int data_list[3];
This declares data_list to be an array of the three elements data_list[0], data_list [1], and
data_list[2], which are separate variables. To reference an element of an array, you use a number
called the index (the number inside the square brackets [ ]).
Point to note about Arrays
• It is a group of variables of similar data types referred to by a single element.
• Its elements are stored in a contiguous memory location.
• The size of the array should be mentioned while declaring it.
• Array elements are always counted from zero (0) onward.
• Array elements can be accessed using the position of the element in the array.
• The array can have one or more dimensions.
Thus, An array in C++ or be it in any programming language is a collection of similar data items
stored at contiguous memory locations and elements can be accessed randomly using indices of
an array. They can be used to store the collection of primitive data types such as int, float,
double, char, etc of any particular type. To add to it, an array in C++ can store derived data types
such as structures, pointers etc. Given below is the picture representation of an array.
1|Page
@myco…TCBE 2202 Computing for Civil Engineering
C++ Array Declaration
dataType arrayName[arraySize];
For example,
int x[6];
Here,
• int - type of element to be stored
• x - name of the array
• 6 - size of the array
In C++, each element in an array is associated with a number. The number is known as an array
index. We can access elements of an array by using those indices.
array[index];
2|Page
@myco…TCBE 2202 Computing for Civil Engineering
Then, the address of the next element x[1] will be 2124, the address of x[2] will be 2128, and
so on. Here, the size of each element is increased by 4. This is because the size of int is 4
bytes.
Here, we have not mentioned the size of the array. In such cases, the compiler automatically
computes the size.
For example,
3|Page
@myco…TCBE 2202 Computing for Civil Engineering
Here, the array x has a size of 6. However, we have initialized it with only 3 elements. In such
cases, the compiler assigns random values to the remaining places. Oftentimes, this random value
is simply 0.
4|Page
@myco…TCBE 2202 Computing for Civil Engineering
C++ Array Size
Get the Size of an Array: To get the size of an array, you can use the sizeof() operator:
Example
int myNumbers[5] = {10, 20, 30, 40, 50};
cout << sizeof(myNumbers);
Result: 20
Why did the result show 20 instead of 5, when the array contains 5 elements?
It is because the sizeof() operator returns the size of a type in bytes. You learned from the Data
Types chapter that an int type is usually 4 bytes, so from the example above, 4 x 5 (4 bytes x 5
elements) = 20 bytes.
To find out how many elements an array has, you have to divide the size of the array by the size
of the data type it contains:
Example
int myNumbers[5] = {10, 20, 30, 40, 50};
int getArrayLength = sizeof(myNumbers) / sizeof(int);
cout << getArrayLength;
Result: 5
5|Page
@myco…TCBE 2202 Computing for Civil Engineering
Example 1: Displaying Array Elements
#include <iostream>
using namespace std;
int main() {
return 0;
}
Run Code
Output
Here, we have used a for loop to iterate from i = 0 to i = 4. In each iteration, we have
printed numbers[i].
We again used a range-based for loop to print out the elements of the array. To learn more about
this loop, check C++ Ranged for Loop. https://www.programiz.com/cpp-programming/ranged-for-loop
6|Page
@myco…TCBE 2202 Computing for Civil Engineering
Note: In our range-based loop, we have used the code const int &n instead of int n as the range
declaration. However, the const int &n is more preferred because:
1. Using int n simply copies the array elements to the variable n during each iteration. This is
not memory-efficient.
&n, however, uses the memory address of the array elements to access their data without
copying them to a new variable. This is memory-efficient.
2. We are simply printing the array elements, not modifying them. Therefore, we use const so
as not to accidentally change the values of the array.
int main() {
int numbers[5];
return 0;
Run Code
7|Page
@myco…TCBE 2202 Computing for Civil Engineering
Output
Enter 5 numbers:
11
12
13
14
15
The numbers are: 11 12 13 14 15
Once again, we have used a for loop to iterate from i = 0 to i = 4. In each iteration, we took an
input from the user and stored it in numbers[i].
Then, we used another for loop to print all the array elements.
Example 3: Display Sum and Average of Array Elements Using for Loop
#include <iostream>
using namespace std;
int main() {
double sum = 0;
double count = 0;
double average;
8|Page
@myco…TCBE 2202 Computing for Civil Engineering
// print the sum
cout << "\nTheir Sum = " << sum << endl;
return 0;
}
Run Code
Output
In this program:
1. We have initialized a double array named numbers but without specifying its size. We also
declared three double variables sum, count, and average.
Here, sum =0 and count = 0.
2. Then we used a range-based for loop to print the array elements. In each iteration of the loop,
we add the current array element to sum.
3. We also increase the value of count by 1 in each iteration, so that we can get the size of the
array by the end of the for loop.
4. After printing all the elements, we print the sum and the average of all the numbers. The
average of the numbers is given by average = sum / count;
Note: We used a ranged for loop instead of a normal for loop. A normal for loop requires us to
specify the number of iterations, which is given by the size of the array. But a ranged for loop
does not require such specifications.
If we declare an array of size 10, then the array will contain elements from index 0 to 9. However,
if we try to access the element at index 10 or more than 10, it will result in Undefined Behaviour.
9|Page
@myco…TCBE 2202 Computing for Civil Engineering
C++ Multidimensional Arrays
In this tutorial, we'll learn about multi-dimensional arrays in C++. More specifically, how to
declare them, access them, and use them efficiently in our program.
In C++, we can create an array of arrays, known as a multidimensional array. To declare a multi-
dimensional array, define the variable type, specify the name of the array followed by square
brackets which specify how many elements the main array has, followed by another set of square
brackets which indicates how many elements the sub-arrays have:
For example:
int x[3][4];
float x[2][4][3];
2 x 4 x 3 = 24
10 | P a g e
@myco…TCBE 2202 Computing for Civil Engineering
Multidimensional Array Initialization
Like a normal array, we can initialize a multidimensional array in more than one way.
The above method is not preferred. A better way to initialize this array with the same array
elements is given below:
This array has 2 rows and 3 columns, which is why we have two rows of elements with 3 elements
each.
This is not a good way of initializing a three-dimensional array. A better way to initialize this array
is:
int test[2][3][4] = {
{ {3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2} },
{ {13, 4, 56, 3}, {5, 9, 3, 5}, {5, 1, 4, 9} }
};
11 | P a g e
@myco…TCBE 2202 Computing for Civil Engineering
The first dimension has the value 2. So, the two elements comprising the first dimension are:
The second dimension has the value 3. Notice that each of the elements of the first dimension has
three elements each:
{3, 4, 2, 3}, {0, -3, 9, 11} and {23, 12, 23, 2} for Element 1.
Finally, there are four int numbers inside each of the elements of the second dimension:
{3, 4, 2, 3}
... .. ...
... .. ...
12 | P a g e
@myco…TCBE 2202 Computing for Civil Engineering
Change Elements in a Multi-Dimensional Array
To change the value of an element, refer to the index number of the element in each of the
dimensions:
Example
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
letters[0][0] = "Z";
cout << letters[0][0]; // Now outputs "Z" instead of "A"
To loop through a multi-dimensional array, you need one loop for each of the array's dimensions.
The following example outputs all elements in the letters array:
Example
#include <iostream>
using namespace std;
int main() {
string letters[2][4] = {
{ "A", "B", "C", "D" },
{ "E", "F", "G", "H" }
};
13 | P a g e
@myco…TCBE 2202 Computing for Civil Engineering
Example 1: Two Dimensional Array
// C++ Program to display all elements
// of an initialised two dimensional array
#include <iostream>
using namespace std;
int main() {
int test[3][2] = {{2, -5},
{4, 0},
{9, 1}};
// use of nested for loop
// access rows of the array
for (int i = 0; i < 3; ++i) {
test[0][0] = 2
test[0][1] = -5
test[1][0] = 4
test[1][1] = 0
test[2][0] = 9
test[2][1] = 1
14 | P a g e
@myco…TCBE 2202 Computing for Civil Engineering
In the above example, we have initialized a two-dimensional int array named test that has 3
"rows" and 2 "columns".
Here, we have used the nested for loop to display the array elements.
• the outer loop from i == 0 to i == 2 access the rows of the array
• the inner loop from j == 0 to j == 1 access the columns of the array
Finally, we print the array elements in each iteration.
int main() {
string letters[2][2][2] = {
{{ "A", "B" },{ "C", "D" }},
{{ "E", "F" },{ "G", "H" }}
};
15 | P a g e
@myco…TCBE 2202 Computing for Civil Engineering
Example 3: Taking Input for Two Dimensional Array
#include <iostream>
using namespace std;
int main() {
int numbers[2][3];
return 0;
}
Run Code
16 | P a g e
@myco…TCBE 2202 Computing for Civil Engineering
Output
Enter 6 numbers:
1
2
3
4
5
6
The numbers are:
numbers[0][0]: 1
numbers[0][1]: 2
numbers[0][2]: 3
numbers[1][0]: 4
numbers[1][1]: 5
numbers[1][2]: 6
Here, we have used a nested for loop to take the input of the 2d array. Once all the input has been
taken, we have used another nested for loop to print the array members.
#include <iostream>
using namespace std;
int main() {
// This array can store upto 12 elements (2x3x2)
int test[2][3][2] = {
{
{1, 2},
{3, 4},
{5, 6}
},
{
{7, 8},
{9, 10},
{11, 12}
}
};
17 | P a g e
@myco…TCBE 2202 Computing for Civil Engineering
// Displaying the values with proper index.
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 2; ++k) {
cout << "test[" << i << "][" << j << "][" << k << "] = " << test[i][j][k] << endl;
}
}
}
return 0;
}
Run Code
Output
test[0][0][0] = 1
test[0][0][1] = 2
test[0][1][0] = 3
test[0][1][1] = 4
test[0][2][0] = 5
test[0][2][1] = 6
test[1][0][0] = 7
test[1][0][1] = 8
test[1][1][0] = 9
test[1][1][1] = 10
test[1][2][0] = 11
test[1][2][1] = 12
However, since we are manipulating 3 dimensions, we use a nested for loop with 3 total loops
instead of just 2:
• the outer loop from i == 0 to i == 1 accesses the first dimension of the array
• the middle loop from j == 0 to j == 2 accesses the second dimension of the array
• the innermost loop from k == 0 to k == 1 accesses the third dimension of the array
As we can see, the complexity of the array increases exponentially with the increase in dimensions.
18 | P a g e
@myco…TCBE 2202 Computing for Civil Engineering
Why do we need arrays?
We can use normal variables (v1, v2, v3, ..) when we have a small number of objects, but if we
want to store a large number of instances, it becomes difficult to manage them with normal
variables. The idea of an array is to represent many instances in one variable.
Disadvantages:-
Disadvantages:-
• Size Limit: We can store only the fixed size of elements in the array. It doesn’t grow its size
at runtime. Thus, arrays allows a fixed number of elements to be entered which is decided at
the time of declaration. Unlike a linked list, an array in C++ is not dynamic.
• Insertion and deletion of elements can be costly since the elements are needed to be managed
in accordance with the new memory allocation.
19 | P a g e
@myco…TCBE 2202 Computing for Civil Engineering