C++ Arrays
Overview
Arrays are collections of elements of the same type stored in contiguous memory locations. C++ provides both C-style arrays and modern container alternatives.
C-style Arrays
Basic Array Declaration and Initialization
cpp
#include <iostream>
int main() {
// Declaration and initialization
int arr1[5] = {1, 2, 3, 4, 5};
int arr2[] = {10, 20, 30, 40, 50}; // size inferred
int arr3[5] = {1, 2, 3}; // remaining elements initialized to 0
// Accessing elements
std::cout << "First element: " << arr1[0] << std::endl;
std::cout << "Last element: " << arr1[4] << std::endl;
// Modifying elements
arr1[2] = 100;
std::cout << "Third element: " << arr1[2] << std::endl;
return 0;
}Multidimensional Arrays
cpp
#include <iostream>
int main() {
// 2D array
int matrix[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
// Accessing 2D array elements
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
std::cout << matrix[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}Arrays and Pointers
cpp
#include <iostream>
int main() {
int arr[] = {10, 20, 30, 40, 50};
int* ptr = arr; // array name decays to pointer
// Access using pointer arithmetic
for (int i = 0; i < 5; i++) {
std::cout << "arr[" << i << "] = " << *(ptr + i) << std::endl;
std::cout << "arr[" << i << "] = " << ptr[i] << std::endl; // equivalent
}
return 0;
}Modern C++ Alternatives
std::array (C++11)
cpp
#include <iostream>
#include <array>
int main() {
// std::array - fixed-size container
std::array<int, 5> arr = {1, 2, 3, 4, 5};
// Access elements
std::cout << "Size: " << arr.size() << std::endl;
std::cout << "First element: " << arr.front() << std::endl;
std::cout << "Last element: " << arr.back() << std::endl;
// Range-based for loop
for (int value : arr) {
std::cout << value << " ";
}
std::cout << std::endl;
return 0;
}std::vector (Dynamic Array)
cpp
#include <iostream>
#include <vector>
int main() {
// std::vector - dynamic array
std::vector<int> vec = {1, 2, 3, 4, 5};
// Add elements
vec.push_back(6);
vec.push_back(7);
// Access elements
std::cout << "Size: " << vec.size() << std::endl;
std::cout << "Element at index 2: " << vec[2] << std::endl;
std::cout << "Element at index 2 (safe): " << vec.at(2) << std::endl;
// Iterate
for (int value : vec) {
std::cout << value << " ";
}
std::cout << std::endl;
return 0;
}Common Array Operations
cpp
#include <iostream>
#include <algorithm>
#include <numeric>
int main() {
int arr[] = {5, 2, 8, 1, 9, 3};
int size = sizeof(arr) / sizeof(arr[0]);
// Find sum
int sum = std::accumulate(arr, arr + size, 0);
std::cout << "Sum: " << sum << std::endl;
// Find maximum
int max = *std::max_element(arr, arr + size);
std::cout << "Maximum: " << max << std::endl;
// Sort array
std::sort(arr, arr + size);
std::cout << "Sorted: ";
for (int value : arr) {
std::cout << value << " ";
}
std::cout << std::endl;
return 0;
}