Welcome to the thrilling world of C++ data structures, with a focus on Arrays! Arrays, which are collections of similar items housed in contiguous memory spots, are crucial tools often used for efficient storage and manipulation of data in C++.
Our objective is simple: we aim to understand what arrays are, and learn how to declare, initialize, access, modify, and traverse them in C++.
An array in C++, named for a group of similar items, is akin to a row of post-office boxes. Each slot, known as an 'index', holds an item of the array's type. This characteristic makes arrays remarkably useful when we need to operate on multiple entities of the same type.
Arrays can be declared in several ways. Let's consider an array to hold the test scores of five students:
C++1int scores[5]; // Array declaration without initialization
C++1int scores[5] = {89, 94, 79, 86, 92}; // Array declaration and initialization with scores
C++1int scores[] = {89, 94, 79, 86, 92}; // Compiler deduces size (5) based on the initializer list
int
is the type of the array, denoting that it will store integer elements. The array, named scores
, can hold five integer values, with one value for each student represented by a slot. The array requires a predefined size, it can't change its size dynamically.
Note that you can't define an array like this:
C++1int N; 2std::cin >> N; 3int array[N];
It won't work, as when the program starts, all variables are initialized, and only then the code executes. So, N
will not hold the user's value when the array is initialized. The array in this code snippet can be of any size, most likely 0
.
The only proper way is:
C++1int max_N = 10000; // an example of the maximum possible N that the user will enter 2int array[max_N];
In this case, we initialize the array with the maximum possible N, and then use only a part of this array when the program executes.
We can access elements within an array using their index, with 0
denoting the first element. For example, to print the score of the third student, the syntax is:
C++1std::cout << scores[2] << "\n"; // Access and print the third element via index `2`
In C++, since valid array indices start from 0
, always ensure that the index is within the bounds of the array. Indexes out of bounds can result in unpredictable behavior because C++ doesn't perform bounds checking!
Let's consider an array numbers
initialized as:
C++1int numbers[] = {10, 20, 30, 40, 50};
numbers[0]
accesses the first element (10
)numbers[1]
accesses the second element (20
)- If you try to access an out-of-bounds index, such as
numbers[10]
, you may get unexpected behavior.
For example:
C++1std::cout << numbers[0] << "\n"; // prints 10 2std::cout << numbers[1] << "\n"; // prints 20 3std::cout << numbers[4] << "\n"; // prints 50 4std::cout << numbers[10] << "\n"; // prints 126782 (could be anything)
Modifying array elements is as straightforward as accessing them. To update the score of the first student:
C++1scores[0] = 92; // Update first element at index '0'
To populate an uninitialized array, you might do something like this:
C++1int scores[5]; // Declare an uninitialized array 2 3scores[0] = 89; 4scores[1] = 94; 5scores[2] = 79; 6scores[3] = 86; 7scores[4] = 92;
To display all of the scores, we can use a loop:
C++1#include <iostream> 2 3int main() { 4 int scores[5] = {89, 94, 79, 86, 92}; // Array initialization with scores of students 5 6 for(int i = 0; i < 5; i++) { 7 std::cout << scores[i] << "\n"; // Print each score 8 } 9 10 return 0; 11}
We can also use a for-each
loop for cleaner code:
C++1#include <iostream> 2 3int main() { 4 int scores[5] = {89, 94, 79, 86, 92}; // Array initialization with scores of students 5 6 for(int score : scores) { 7 std::cout << score << "\n"; // Print each score 8 } 9 10 return 0; 11}
The for(int score : scores) {}
loop automatically iterates through each element in the scores
array, assigning each element's value to score
in turn.
Arrays in C++ are homogeneous, meaning they can only store one type of data. If you try to use different data types, the compiler will throw an error. For instance:
C++1int numbers[5] = {1, 2, 3, 'c', 4.5}; // This will cause a compiler error because 'c' and 4.5 are not integers
Well done! You've now grasped the basics of arrays in C++. You now understand what arrays are and have learned how to declare, initialize, access, modify, and traverse them. These skills form the foundation for many complex programming constructs, which you'll learn about later. It's time to reinforce your knowledge with some stimulating exercises related to arrays. Remember, practice makes perfect, so let's dive straight into the exercises!