Часто возникает необходимость хранить не одну переменную, а набор однотипных переменных. Например, список учащихся класса – это набор данных строкового типа, координаты вершин многоугольника или коэффициенты многочлена – это набор числовых данных. Для хранения наборов данных используются структуры данных. Основная структура данных – это массив.
Массив — это структура однотипных данных, занимающих непрерывную область памяти. Массив имеет размер — количество элементов в нем. Каждый элемент массива имеет свой номер (также называемый индексом), обращение к элементу массива осуществляется путем указания его индекса. В языке C++ элементы нумеруются начиная с 0, поэтому последний элемент массива имеет номер на 1 меньше размера массива.
Массив в языке C задается следующим образом:
тип_элементов идентификатор[размер];
где тип_элементов — произвольный тип данных языка C++,
который будут иметь элементы массива, например, int, double
и т.д.; идентификатор — имя массива, размер — число
элементов в нем.
По стандарту языков C и C++, размер массива должен быть константой,
определенной на момент компиляции программы, то есть можно определить
массив в виде int A[10 + 5], но нельзя это сделать в виде
int A[n]. Однако, компилятор gcc, которым мы пользуемся,
допускает объявления второго вида, но при этом нет никаких гарантий,
что ваша программа будет откомпилирована каким-либо другим компилятором.
К элементу массива можно обращаться, как идентификатор[индекс].
Например, если было сделано объявление
double A[5];
то таким образом создается 5 элементов массива типа double:
A[0], A[1], A[2], A[3], A[4].
Пример программы, которая создает массив типа int[],
заданного пользователем размера, считывает с клавиатуры его элементы, затем прибавляет к каждому элементу массива
число 1, затем выводит результат на экран:
#include <iostream>
using namespace std;
int main()
{
int n; // Размер массива
int i; // Счетчик в циклах
cin >> n; // Считываем размер массива
int A[n]; // Объявление массива
// Считываем массив
for (i = 0; i < n; ++i)
{
cin >> A[i];
}
// Прибавляем по 1 к каждому элементу
for (i = 0; i < n; ++i)
{
A[i] += 1;
}
// Выводим массив на экран
for (i = 0; i < n; ++i)
{
cout << A[i] << " ";
}
// Переведем курсор на новую строку
cout << endl;
return 0;
}
В этом примере при помощи // обозначается начало комментария, весь текст
после начала комментария и до конца строки компилятором игнорируется.
Второй способ объявления комментария: в начале комментария поставить
знаки /*, а в конце – */. Это позволяет
делать комментарии, занимающие несколько строк. В языке C допустимы только
такие комментарии.
В языке C++ появился более удобный, по сравнению с классическим массивом в языке C, контейнер vector. Он является аналогом обычных массивов, но поддерживает дополнительные возможности, например, его размер можно изменять по ходу программы.
Для использования контейнера vector необходимо в начале программы подключить заголовочный файл
vector:
#include <vector>
Вектор A данных типа int объявляется так:
vector <int> A;
В данном случае будет создан вектор нулевого размера. При необходимости создать вектор нужного размера можно задать размер вектора в качестве параметра конструктора:
vector <int> A(n);
В любой момент можно изменить размер вектора при помощи вызова метода resize.
Текущий размер вектора можно узнать про помощи метода size.
Обращение к элементам вектора осуществляется так же, как к элементам массива, при помощи квадратных скобок.